Powershell Befehle in der Konsole
Zu Beginn muss für PowerShell nicht immer gleich ein Skript geschrieben werden. Gerade für Administratoren bietet die PowerShell-Konsole eine Möglichkeit bestimmte Tasks über Befehle auszuführen.
Pipe
Befehle die mit "get-" beginnen liefern meist ein oder mehrere Objekte. Als Beispiel liefert der Befehl "get-service" alle Dienste des Computers. "get-service" kann mit dem zusätzlichen Parameter -name zudem auf ein oder mehrere Services eingeschränkt werden. Das Ergebnis der Abfrage kann mit dem Pipe-Symbol "|" an einen anderen Befehl übergeben werden, z.B. start-service:
get-service -name defragsvc | start-service
get-service übergibt das Ergebnis an den Befehl start-service welcher den Dienst dann startet.
von-bis
PS C:\Users> 1..3
1
2
3
Powershell Pipe von bis Nummer mehrstellig
In PowerShell ist es möglich Foreach-Schleifen für einfache Befehle über eine Pipeline (Pipe) umzusetzen.
Einfache Schleife von-bis mittels Pipe
Mit folgender Schreibweise kann eine einfache Schleife von 1-xx gebildet werden:
PS C:\temp> 1..4 | %{ $_ }
1
2
3
4
"%" ist ein Alias für "foreach", $_ ist die Variable für Werte die über die Pipe "|" übergeben werden.
von-bis mit vorangestellten Nullen (0):
Für das Anlegen mehrere Objekte kann mit -f das Format vorgegeben werden.
PS C:\temp> 9..11 | %{ write-output $('{0:0000}' -f $_)}
0009
0010
0011
Anstelle von "write-output" können innerhalb der Foreach-Schleife: {} natürlich auch andere Befehle ausgeführt werden. Als konkretes Beispiel könnten eine bestimmte Anzahl an Computer-Objekten in Active-Directory angelegt werden:
PS C:\temp> 1..100 | % { New-ADComputer -Name "TESTPC$('{0:0000}' -f $_)" -SamAccountName "TESTPC$('{0:0000}' -f $_)" -path "OU=Computers,DC=domain,DC=local" }
Der Befehl würde die Computerkonten TESTPC0001 bis TESTPC0100 anlegen.
PS C:\temp> 9..11 | %{ write-output $('{0:0000}' -f $_)}
0009
0010
0011
{{percentage}} % positiv