如下为脚本内容:
1 首先使用get-disk命令检测未被初始化的磁盘,磁盘为被初始化属性会为raw,使用rawdisk变量获取未被初始化的磁盘。
2 判断rawdisk是否有值,如果有,则存在未被初始化磁盘,条件为真,进行下一步。如果空值,则说明系统没有未被初始化的磁盘,输出:没有找到未格式化的磁盘或 RAW 参数不为 True。
3 将磁盘初始化为GPT格式,windows默认MBR格式不支持超过2TB的磁盘,所以建议使用GPT格式,实现可以在windows上使用超过2T的数据盘。
3 在初始化的磁盘上面创建新的分区,这里就默认使用全部空间的。
4 为新建的分区分配驱动器符号,首先进行了一个判断,如果自定义设置的驱动器盘符被占用了,系统则自动顺延未被使用的驱动器符号。如果未被占用,则使用自定义设置的,这里设置了Q盘符
5 脚本运行成功后,会弹出格式化磁盘窗口,无需理会即可,退出窗口即可,然后进入我的电脑即可发现新初始化的磁盘。
$rawDisk = Get-Disk | Where-Object { $_.OperationalStatus -eq 'Offline' -and $_.PartitionStyle -eq 'RAW' }
if ($rawDisk) {
$diskNumber = $rawDisk.Number
# 将磁盘进行初始化为 GPT 格式
Initialize-Disk -Number $diskNumber -PartitionStyle GPT
# 在磁盘上创建新分区
$partition = New-Partition -DiskNumber $diskNumber -UseMaximumSize -AssignDriveLetter
$driveLetter = $partition.DriveLetter
if ($driveLetter -ne 'H') {
# 检查驱动器符号是否已被使用
$isDriveLetterUsed = (Get-Partition | Where-Object { $_.DriveLetter -eq 'H' }).Count -gt 0
if ($isDriveLetterUsed) {
Write-Host "驱动器符号 H 已被使用,寻找顺延的未使用的驱动器符号。"
# 查找未被使用的驱动器符号
$availableDriveLetters = [System.IO.DriveInfo]::GetDrives() | Where-Object { $_.DriveType -eq 'NoRootDirectory' } | ForEach-Object { $_.Name.Substring(0,1) }
$availableDriveLetters = $availableDriveLetters | Where-Object { $_ -ge 'I' }
if ($availableDriveLetters.Count -gt 0) {
$nextAvailableDriveLetter = $availableDriveLetters[0]
Write-Host "将驱动器符号修改为 $nextAvailableDriveLetter。"
Set-Partition -DriveLetter $driveLetter -NewDriveLetter $nextAvailableDriveLetter
$driveLetter = $nextAvailableDriveLetter
} else {
Write-Host "没有找到顺延的未使用的驱动器符号。"
}
} else {
Write-Host "驱动器符号 Q 未被使用,将驱动器符号修改为 。"
Set-Partition -DriveLetter $driveLetter -NewDriveLetter 'H'
$driveLetter = 'Q'
}
}
# 格式化分区为 NTFS 文件系统
Format-Volume -DriveLetter $driveLetter -FileSystem NTFS -Confirm:$false
} else {
Write-Host "没有找到未格式化的磁盘或 RAW 参数不为 True。"
}