一些背景知识:我在实验室环境中工作,并且遇到了许多问题,需要创建VHD并将其附加到VM进行压力测试。我想出了一个脚本,允许用户使过程尽可能简单,具体如下:
2007_roman_pottery_in_the_archaeological_record_2007.pdf
2007_power_politics_and_religion_in_timurid_iran_2007.pdf
2006_toward_a_theory_of_human_rights_religion_law_courts_2006.pdf
2008_i_was_wrong_the_meanings_of_apologies_2008.pdf
当我运行代码时,它给出了一个错误,指出Dismount-VHD不能与给定的路径一起工作。我试图进入并给它$ vhdPath变量,它仍然阻塞。
我遇到的另一个问题是while语句没有递增$ val。当它进入下一个语句时,它会抛出一个错误并停止,说有问题的VM已经附加了磁盘。
任何帮助将不胜感激。
答案 0 :(得分:5)
我理解PowerShell中管道的美妙之处,但这有点太过分了:)。如果拆分大型管道,事情就可以了。
$vhdPath = (Join-path $Path ($fileName + '-' + $val + '.vhdx'))
New-VHD -Path $vhdPath -SizeBytes $vhdSize -Fixed
Mount-VHD -Path $vhdPath
$disk = get-vhd -path $vhdPath
Initialize-Disk $disk.DiskNumber
$partition = New-Partition -AssignDriveLetter -UseMaximumSize -DiskNumber $disk.DiskNumber
$volume = Format-Volume -FileSystem NTFS -Confirm:$false -Force -Partition $partition
Dismount-VHD -Path $vhdPath
Add-VMHardDiskDrive -VMName $n -Path $vhdPath
您尝试执行的操作的主要问题是 Dismount-VHD 不接受管道输入,即使这样做,也不知道如何处理卷对象(这是输出格式 - 音量)
如果你想保留管道,把Dismount-VHD -Path $vhdPath
放在一个单独的行上,一切都应该很好。
同样在创建路径时,您应该使用加入路径来避免问题。
答案 1 :(得分:0)
只有下马才能对管道起作用。
New-VHD -Path $image -SizeBytes $size |
Mount-VHD -Passthru |
Initialize-Disk -PassThru |
New-Partition -AssignDriveLetter -UseMaximumSize |
Format-Volume -FileSystem NTFS -Confirm:$false -Force
Dismount-VHD -Path $vhdPath
Get-VM -Id $vm |
Get-VMScsiController |
Add-VMHardDiskDrive -Path $image
我想知道我们是否可以走得更远。