试图创造。初始化和格式化VHD磁盘

时间:2015-04-24 00:24:54

标签: powershell hyper-v cmdlets vhd

一些背景知识:我在实验室环境中工作,并且遇到了许多问题,需要创建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已经附加了磁盘。

任何帮助将不胜感激。

2 个答案:

答案 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

我想知道我们是否可以走得更远。