使用 PowerShell 格式化磁盘而不提示确认

Formatting a disk using PowerShell without prompting for confirmation

我已将数据磁盘添加到 Azure 虚拟机,我需要为它们创建一个卷。

我使用以下代码创建了卷:

$disk = Get-Disk | where-object PartitionStyle -eq "RAW"  
$disk | Initialize-Disk -PartitionStyle GPT  
$partition = $disk | New-Partition -UseMaximumSize -DriveLetter F  
$partition | Format-Volume -Confirm:$false -Force  

创建卷时,在格式化磁盘之前要求确认。

我想避开这个确认框。我试过了 -Confirm:$false -Force 但它仍然提示确认。

看来这可能是 Format-Volume 如何处理 -Confirm 的错误,如此处讨论:https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11088429-format-volume-force-parameter-does-not-work

建议的解决方法是在开始之前设置 $confirmpreference = 'none'

您可能还想先将当前的 $confirmpreference 获取到一个变量中,然后再将其恢复到原来的状态。例如:

$disk = Get-Disk | where-object PartitionStyle -eq "RAW"  
$disk | Initialize-Disk -PartitionStyle GPT  
$partition = $disk | New-Partition -UseMaximumSize -DriveLetter F  

$currentconfirm = $confirmpreference
$confirmpreference = 'none'
$partition | Format-Volume -Force  
$confirmpreference = $currentconfirm 

这解决了我的问题。使用以下代码时不会出现确认弹出窗口。

$disk = Get-Disk | where-object PartitionStyle -eq "RAW"  
Initialize-Disk -Number $disk.Number -PartitionStyle MBR -confirm:$false  
New-Partition -DiskNumber $disk.Number -UseMaximumSize -IsActive | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Local Disk" -confirm:$False  
Set-Partition -DiskNumber $disk.Number -PartitionNumber 1 -NewDriveLetter F  
Stop-Service -Name ShellHWDetection
$Disk = Get-Disk 2
# $Disk | Clear-Disk -RemoveData -Confirm:$false
$Disk | Initialize-Disk -PartitionStyle MBR
$Disk | New-Partition -UseMaximumSize -DriveLetter T | Format-Volume -FileSystem NTFS -NewFileSystemLabel "DiskLevel" -Confirm:$false -Force
Start-Service -Name ShellHWDetection
Above code worked for me Stop and Start of  ShellHWDetection is the key here 
Clear-Disk $DiskNum -RemoveData -Confirm:$false
$path="d:\vhd\newvhd.vhdx"
$newVHD=New-VHD -Path $path -Dynamic -SizeBytes 2TB | Mount-VHD -NoDriveLetter -Passthru |Initialize-Disk -Passthru |New-Partition -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false -Force
$driverletter = ls function:[d-z]: -n | ?{ !(test-path $_) } | select -First 1
$newVHD|Get-Partition | Set-Partition -NewDriveLetter ($driverletter.replace(':',''))