Win PowerShell-Skriptdateien
- [Workshop] Powershell unter Windows 7 - Aufgaben mit Scripts
- Win PowerShell-Skriptdateien
- Hilfe zu Windows PowerShell
Windows PowerShell-Skriptdateien
Grundsätzliche könnten Sie auch mehrzeilige Skripte ausführen, indem Sie die Anweisungen nacheinander auf der Kommando-Shell eingeben. Die Windows PowerShell merkt sich auch in diesem Fall den aktuellen Zustand der Skriptausführung.
Wenn Sie beispielsweise den Befehl New-Variable date ein zweites Mal verwenden, erhalten Sie die Meldung, dass eine Variable mit diesem Namen bereits existiert. Gerade wenn man bestimmte Aufgaben wiederholt durchführen muss, liegt es jedoch nahe, den Code als Skriptdatei mit der Erweiterung .ps1 zu speichern:
• Editieren Sie den Code im Skriptbereich der Windows PowerShell ISE (mit dem Menübefehl Datei/Neu fügen Sie dem Fenster bei Bedarf weitere Tabs hinzu). • Klicken Sie anschließend auf Datei/Speichern oder auf das entsprechende Icon in der Symbolleiste. • Stellen Sie in der unteren Drop-Down-Liste des erscheinenden Speichern unter-Dialogs den Dateityp PowerShell-Skripte (*.ps1) ein und legen Sie Name und Speicherort für die Skriptdatei fest. • Klicken Sie schließlich auf Speichern, wenn Sie fertig sind.

© Archiv
Ein bestehendes Skript laden Sie mit dem Menübefehl Datei/Öffnen... in den Skriptbereich der Windows PowerShell ISE. Um es auszuführen, klicken Sie auf Datei/Ausführen, wählen das entsprechende Symbol oder drücken die Taste F5.
Sie können ein Skript auch teilweise ausführen lassen, indem Sie den Code zunächst markieren und dann im Datei-Manü den Befehl Auswahl ausführen verwenden. Dort finden Sie für den Notfall auch den Befehl Ausführung beenden. Dieser bricht ein laufendes Skript sofort ab.
NET-Objekte anlegen
Objekte von .NET-Klassen instanzieren Sie mit dem Cmdlet New-Object. Das folgende Skript (listallserversindomain.ps1, Heft-DVD) informiert Sie über alle Windows 2008 Server, die sich in der Domäne befinden.
$strCategory = "computer"$strOperatingSystem = "Windows*Server*2008*"$objDomain = New-Object System.DirectoryServices.DirectoryEntry$objSearcher = New-Object System.DirectoryServices.DirectorySearcher$objSearcher.SearchRoot = $objDomain$objSearcher.Filter = ("OperatingSystem=$strOperatingSystem")$colResults = $objSearcher.FindAll()foreach ($objResult in $colResults){ $objComputer = $objResult.Properties; $objComputer.name }"Es gibt $($colResults.count) " + $strOperatingSystem + " in der Domäne"
Die Methode FindAll() der DirectorySearcher-Klasse gibt alle Computer mit dem Betriebssystem $strOperatingSystem zurück. Um nach allen Servern zu suchen, weisen Sie der Variablen den Wert "Windows*Server*" zu ($strOperatingSystem = "Windows*Server*"), für Windows 2003 Server den String "Windows*Server*2003*". Für die sukzessive Ausgabe der Servernamen sorgt die foreach-Schleife.

© Archiv
Auf der Heft-DVD finden Sie außerdem noch die Skripte listallusersindomain.ps1 und listlallmailsindomain.ps1, die ähnlich aufgebaut sind und die Benutzernamen und E-Mail-Adressen aller Mitglieder einer Domäne ausgeben. Vergleichsweise ungewöhnlich erscheint das Zeichen `n, welches die Ausgabe in der nächsten Zeile fortsetzt (die meisten Skriptsprachen verwenden dazu das Zeichen \n).
Computer einer Domäne hinzufügen
Häufig ist mit einem PowerShell-Skript mit nur geringem Aufwand sehr viel zu erreichen, wenn es um Administrationsaufgaben geht. Um beispielsweise einen lokalen Computer einer Domäne hinzuzufügen, benötigen Sie nur ein einziges Cmdlet!
Diesem (Add-Computer) übergeben Sie den Namen der Domäne, der das Computerkonto hinzugefügt werden soll, fragen mit dem Parameter Credential die Anmeldinformationen ab und geben die gewünschte Organisationseinheit für das Computerkonto in der Domäne an (Parameter OUPath). Anschließend starten Sie den Computer neu (Restart-Compute). Das war's dann auch schon. Hier der Beispielcode:
Add-Computer CONTOSO -Credential (Get-Credential CONTOSO\administrator) -OUPath "ou=SBSTraining,ou=Computers,ou=MyBusiness,dc=CONTOSO,dc=local"Restart-Computer
Domänenname (hier: CONTOSO) und Organisationseinheit müssen Sie natürlich ersetzen.