2017-06-30 65 views
1

我想寫一個腳本,當運行時,會檢測到我已經添加的外部驅動器,然後初始化,分區,然後格式化它。安全機制將是磁盤的「友好名稱」,這對於我使用的所有磁盤都是相同的。我通常批量做這個,所以需要編寫腳本以節省時間。PowerShell腳本自動格式化外部連接的驅動器

我已經想出以下四行:

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 

的「的FriendlyName」可以在運行中可以看出「獲取磁盤」

剪切和粘貼這些是好的,工作完成。

兩個問題:

1)3和4行指的是硬編碼DiskNumber和驅動器號。 DiskNumber是在執行第2行後分配的。然後DriveLetter被分配執行第3行。我希望第3行和第4行更安全並希望第3行執行New-Partition,特別是第2行的結果(即依賴於磁盤編號分配),第4行根據第3行的結果執行Format-Volume(即,取決於分配的驅動器號)。

2)我想把所有這些都放到ps1腳本中,方便雙擊運行。

你能幫忙嗎?

回答

0

Initialize-Disk具有開關參數-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文件中,你就可以走了。

+0

先生您是國王,謝謝!感謝廣泛的分解 - 頂級人物。 –

+0

也感謝ASR –

+0

ps。我確實感到可怕;雙擊腳本時,「訪問CIM資源對客戶端不可用」。如何提升管理員權限以防止發生這種情況? –