2017-06-30 1 views
1

Ich versuche ein Skript zu schreiben, das bei der Ausführung ein externes Laufwerk erkennt, das ich hinzugefügt habe, und dann Initialisiere, Partion und dann formatiere es. Der Sicherheitsmechanismus ist der 'FriendlyName' der Festplatte, der für alle Festplatten identisch ist. Normalerweise mache ich das, also muss ich es skripten, um Zeit zu sparen.Powershell Script zur automatischen Formatierung extern angeschlossener Laufwerke

Ich habe mit den folgenden vier Linien kommen:

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 

Die „Friendly“ zu sehen ist, wenn Sie laufen ‚Get-Disk‘

Ausschneiden und Einfügen dieser in Ordnung ist, den Job wird erledigt.

zwei Probleme:

1) Die Linien 3 und 4 beziehen sich auf eine hartkodierte disknumber und Laufwerksbuchstabe. DiskNumber wird nach Ausführung von Zeile 2 zugewiesen. DriveLetter wird dann bei Ausführung von Zeile 3 zugewiesen. Ich möchte, dass die Zeilen 3 und 4 ausfallsicherer sind und Zeile 3 speziell auf das Ergebnis von Zeile 2 (dh abhängig von der Festplatte) Neue Partition ausführen soll Nummer zugewiesen) und Zeile 4, um das Format-Volume basierend auf dem Ergebnis von Zeile 3 (dh abhängig von zugewiesenem Laufwerksbuchstaben) auszuführen.

2) Ich möchte all dies in ein Skript ps1 für einen einfachen Doppelklick, um die Aktion auszuführen.

Können Sie helfen?

Antwort

0

Initialize-Disk hat einen Schalter Parameter -PassThru die, wenn sie spezifiziert ist, es die Ausgabe MSFT_Disk ein Objekt vom Typ bewirkt, die ein Number Element hat. Man könnte es wie folgt verwenden:

$disk = Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR -PassThru 
New-Partition -DiskNumber $disk.Number -UseMaximumSize -AssignDriveLetter 

jedoch New-Partition akzeptiert als Eingabe ein MSFT_Disk Objekt, so können Sie Rohr nur die Ausgabe von Initialize-Disk in New-Partition:

Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter 

Auch die Ausgabe von New-Partition kann direkt in Format-Volume piped, so sieht Ihr ganzes Skript so aus:

Clear-Disk -FriendlyName 'ST3000DM 2CS' -RemoveData -Confirm:$false  
Initialize-Disk -FriendlyName 'ST3000DM 2CS' -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter | Format-Volume -Confirm:$false 

Setzen Sie das einfach in eine PS1-Datei und Sie können loslegen.

+0

Herr Sie sind ein König, danke! Danke für den umfangreichen Zusammenbruch - Top-Mann. –

+0

Auch danke ASR –

+0

ps. Ich bekomme die gefürchteten; "Zugriff auf eine CIM-Ressource war für den Client nicht verfügbar" beim Doppelklicken auf Skript. Wie kann ich Administratorrechte erteilen, um dies zu verhindern? –

Verwandte Themen