いくつかの背景: 私はラボ環境で作業しており、ストレス テストのために VHD を作成して VM に接続する必要があるという多くの問題があります。ユーザーがプロセスをできるだけ簡単にできるようにするスクリプトを思いつきました。これは次のとおりです。
$vms=Get-VM
$val = 0
Write-Host "This script is set up for quickly creating and initilizing VHDs"
$Path = Read-Host "Please enter the path you want to create the drives to. Use the formate in this example <E:\VHDS\>"
$fileName = Read-Host "The Drive will be <target>-<number>.vhdx. Please Name the target "
$vhdSize = 1GB
$vmAmount = Read-Host "How many Drives should be attached to each VM?"
foreach ($vm in $vms)
{
$n = $vm.Name
while ($val -ne $vmAmount)
{
$vhdPath = ($Path + $fileName + '-' + $val + '.vhdx')
New-VHD -Path $vhdPath -SizeBytes $vhdSize -Fixed | Mount-VHD -Passthru | Initialize-Disk -Passthru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -Confirm:$false -Force | Dismount-VHD -Passthru
Add-VMHardDiskDrive -VMName $n -Path $vhdPath
$val++
}
}
コードを実行すると、指定されたパスでは Dismount-VHD が機能しないというエラーが表示されます。入って $vhdPath 変数を指定しようとしましたが、それでもブロックされます。
私が直面しているもう 1 つの問題は、while ステートメントが $val をインクリメントしていないことです。次のステートメントに入ると、エラーをスローして停止し、問題の VM には既にディスクが接続されていることを示します。
どんな助けでも大歓迎です。