如下为脚本内容:

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。"
}