我正在尝试编写一个脚本,该脚本在运行时会检测到我添加的外部驱动器,然后初始化,分区然后格式化它。安全机制将是磁盘的“FriendlyName”,对于我使用的所有磁盘都是相同的。我通常批量执行此操作,因此需要编写脚本以节省时间。
我想出了以下四行:
1: Clear-Disk -FriendlyName 'ST3000DM 2CS' -RemoveData -Confirm:$false
2: Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR
3: New-Partition -DiskNumber 1 -UseMaximumSize -AssignDriveLetter
4: Format-Volume -DriveLetter F -Confirm:$false
运行“Get-Disk”时可以看到“FriendlyName”
切割和粘贴这些都很好,工作就完成了。
两个问题:
1)第3行和第4行是指硬编码的DiskNumber和DriveLetter。执行第2行后分配DiskNumber。然后在执行第3行时分配DriveLetter。我希望第3行和第4行更加安全,并希望第3行专门针对第2行的结果执行New-Partition(即依赖于磁盘)分配的数字),第4行根据第3行的结果执行格式 - 体积(即取决于分配的驱动器号)。
2)我想将所有这些都粘贴到ps1脚本中,以便轻松双击以执行操作。
你能帮忙吗?
答案 0 :(得分:0)
Initialize-Disk
有一个switch参数-PassThru
,在指定时会导致它输出MSFT_Disk类型的对象,该对象具有Number
成员。您可以像这样使用它:
$disk = Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR -PassThru
New-Partition -DiskNumber $disk.Number -UseMaximumSize -AssignDriveLetter
但是,New-Partition
接受MSFT_Disk
对象作为输入,因此您只需将Initialize-Disk
的输出传输到New-Partition
:
Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter
同样,New-Partition
的输出可以直接传送到Format-Volume
,因此您的整个脚本如下所示:
Clear-Disk -FriendlyName 'ST3000DM 2CS' -RemoveData -Confirm:$false
Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter | Format-Volume -Confirm:$false
只需将其放入ps1文件中即可。