Powershell脚本初始化新驱动器,从阵列中命名它们



我编写了以下代码来初始化添加到Windows虚拟机中的新磁盘:

 $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"等…

我尝试了$name="OS"、"Data"、"System",并将该变量放在$disknum的位置,但这只是在循环时添加了整个字符串作为卷名。

我是不是错过了什么?它应该是循环中的一个变量吗?如何让它在循环内每次运行磁盘初始化时从变量中读取每个名称?

我是powershell的新手,看到例子对我有很大帮助。

由于我不知道您使用了多少个驱动器,我在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
}
  1. 您可以根据连接磁盘的大小初始化磁盘
  2. 在连接了这么多磁盘的情况下,您可能需要根据磁盘的大小将特定的字母赋予磁盘。#在这个场景中,我们将字母F归因于一个20GB的磁盘
$disknum = @(get-disk | Where-Object partitionstyle -eq 'raw'| Where-Object {$_.Size /1GB -match '20'})
$dl = get-Disk $disknum.Number | 
Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize
Format-Volume -driveletter F -FileSystem NTFS -NewFileSystemLabel 'DB Data' -Confirm:$false

最新更新