Powershell脚本自动格式化外部连接的驱动器

时间:2017-06-30 01:51:58

标签: shell powershell scripting

我正在尝试编写一个脚本,该脚本在运行时会检测到我添加的外部驱动器,然后初始化,分区然后格式化它。安全机制将是磁盘的“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脚本中,以便轻松双击以执行操作。

你能帮忙吗?

1 个答案:

答案 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文件中即可。