我打了下面的代码来初始化添加到Windows VM的新磁盘:
$newdisk = get-disk | where partitionstyle -eq 'raw'
foreach ($d in $newdisk){
$disknum = $d.Number
$dl = get-Disk $d.Number | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize
Format-Volume -driveletter $dl.Driveletter -FileSystem NTFS -NewFileSystemLabel "Disk $disknum" -Confirm:$false
}
我不想使用文件系统标签的磁盘编号,而是使用一些预定义的卷名,例如" OS"," Data"," System&#34 ;等等......
我尝试了$ name =" OS"," Data"," System"并将该变量放在$ disknum的位置,但这只是将整个字符串添加为循环播放的卷名。
我错过了什么吗?它应该是循环内部的变量吗?如何在循环内每次运行磁盘启动时从变量中读取每个名称?
我对powershell很新,看到例子对我有所帮助。
答案 0 :(得分:2)
由于我不知道您使用了多少驱动器,因此在labels
阵列中包含了一些虚拟条目。
这使用for循环而不是foreach,因此不需要嵌套循环结构。
$newdisk = @(get-disk | Where-Object partitionstyle -eq 'raw')
$Labels = @('OS','Data','System','OS','Data','System')
for($i = 0; $i -lt $newdisk.Count ; $i++)
{
$disknum = $newdisk[$i].Number
$dl = get-Disk $disknum |
Initialize-Disk -PartitionStyle GPT -PassThru |
New-Partition -AssignDriveLetter -UseMaximumSize
Format-Volume -driveletter $dl.Driveletter -FileSystem NTFS -NewFileSystemLabel $Labels[$i] -Confirm:$false
}