PowerShell

Die wichtigsten Befehle für Administratoren

22.04.2016 von Thomas Joos
Mit der Powershell erledigen Sie viel Arbeit in kurzer Zeit: Diese Powershell-Befehle sollten Windows-Profis und -Administratoren kennen.

Mit der PowerShell können Administratoren recht einfach viele Aufgaben durchführen, die für den täglichen Betrieb notwendig sind. Auch für einen besseren Datenschutz in Windows 10 können Befehle aus der PowerShell helfen. Wir zeigen Powershell-Befehle, die Administratoren kennen sollten.


1. Windows 10 Datenschutz: Windows-Aufgaben in der PowerShell deaktivieren und überwachen

Windows 10 sendet in regelmäßigen Abständen Informationen über das Internet zu Microsoft. Viele der Übertragungen führt Windows als geplante Aufgabe durch. Ein Beispiel ist die Aufgabe „Programm zur Verbesserung der Benutzerfreundlichkeit (Customer Experience Improvement Program, CEIP)“. Um diesen Dienst zu beenden, verwenden Sie folgenden Befehl:

Disable-ScheduledTask -TaskName "\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask"

Den Status der Überwachungs-Aufgaben in Windows 10 können Sie in der PowerShell überwachen und anpassen

Die entsprechenden Befehle lassen sich in Netzwerken mit Active Directory auch über PowerShell-Skripte als Anmeldeskript hinterlegen. Den Status der Dienste können Sie mit

get-ScheduledTask

anzeigen. Hier reicht zur Abfrage der Name der Aufgabe, es muss nicht der komplette Pfad angegeben werden.

2. Drucker und Druckaufträge in der PowerShell steuern

Administratoren können auf Servern, Arbeitsstationen, aber auch auf Remotedesktop-Sitzungs-Hosts Probleme mit Druckern in der PowerShell beheben. Die installierten Drucker können Sie mit

get-printer

aufrufen. Hier ist auch zu sehen welche Treiber für die Drucker verwendet werden. Alle Druckaufträge auf einem Server oder Computer lassen sich mit

get-printer | get-printjob |fl

anzeigen.

Wollen Sie zum Beispiel eine Liste anzeigen, die Standort, Name und Status anzeigt, verwenden Sie:

Get-Printer | fl Name, Location, PrinterStatus

Wollen Sie Druckaufträge löschen, verwenden Sie das Cmdlet

Remove-PrintJob.

Auch hier haben Sie die Möglichkeit die Printjobs einzelner Drucker zu filtern und löschen zu lassen:

Remove-PrintJob –PrinterName „Samsung“ -ID 1

Die PowerShell kann aber auch anzeigen welche Benutzer einen Druckjob gestartet haben. Auf Wunsch können Sie dann in der PowerShell bei allen Druckern im Unternehmen die Druckaufträge eines bestimmten Anwenders löschen lassen. Auch das geht in der PowerShell wesentlich schneller, als mit grafischen Werkzeugen:

Get-Printer | Get-PrintJob | where UserName -LIKE <Benutzername> | Remove-PrintJob

Interessant in diesem Bereich sind auch:

Restart-PrintJob – Startet einen Druckjob neu
Resume-PrintJob – Setzt einen Druckjob fort

3. Verschiedene Möglichkeiten für den Netzwerkzugriff mit der PowerShell

Sie haben mehrere Möglichkeiten PowerShell-Befehle über das Netzwerk auszuführen. Zunächst können Sie sich über die PowerShell oder der PowerShell ISE normale CMDlets mit der Option -computername ausführen. In diesem Fall wird die lokale PowerShell-Sitzung verwendet, aber die PowerShell sendet den Befehl über das Netzwerk auf den Ziel-Server. Mit dem Befehl

Get-Help * -Parameter ComputerName

lassen Sie sich eine Liste aller dieser Cmdlets anzeigen.

PowerShell-Befehle lassen sich auch über das Netzwerk durchführen.

Die zweite Möglichkeit besteht darin, dass Sie in der PowerShell oder der PowerShell ISE direkt eine PowerShell-Sitzung auf dem Remoteserver öffnen. Alle Befehle, die Sie in dieser Sitzung ausführen, werden dann auf dem Remotecomputer ausgeführt. Hier ist dann die Option -computername nicht notwendig, da die Sitzung ohnehin auf dem Remotecomputer ausgeführt wird.

Wollen Sie von einer lokalen PowerShell-Sitzung über das Netzwerk Programme auf einem Remotecomputer starten, verwenden Sie folgenden Befehl:

Invoke-Command -ComputerName <Ziel-Computer> -ScriptBlock { <Befehl> } -credential <Benutzername>

Funktioniert der Befehl, öffnet sich ein Authentifizierungsfenster und Sie müssen das Kennwort für den Benutzer eingeben.

Mit dem CMDlet

Test-WsMan <Computername>

testen Sie den Zugriff. Erhalten Sie keine Fehlermeldung, sondern eine Statusanzeige, funktioniert der Zugriff vom Quell-Computer auf den Ziel-Computer.

In der PowerShell ISE öffnen Sie Remote-Sitzungen am einfachsten. Dazu rufen Sie Datei\Neue Remote-PowerShell-Registerkarte auf, geben den Servernamen ein und Anmeldedaten für den Server. Alle Befehle, die Sie in dieser Sitzung ausführen, werden auf dem Remotecomputer gestartet.

Um eine Remotesitzung in der normalen PowerShell zu erstellen, geben Sie das Cmdlet New-PSSession ein. Mit

Enter-PSSession <Servername>

bauen Sie eine Verbindung auf. Wollen Sie sich mit einem anderen Benutzer authentifizieren, verwenden Sie

Enter-PSSession -ComputerName <Computer> -Credential <Benutzer>.

Mit Exit-Session beenden Sie diese Sitzung wieder. Sie können in Windows Server 2012 R2 und Windows 8.1 auch Sitzungen unterbrechen und erneut aufzubauen. Bei unterbrochenen Sitzungen laufen die Cmdlets in der Sitzung weiter. Dazu nutzen Sie die Cmdlets

Disconnect-PSSession, Connect-PSSession

und

Receive-PSSession.

4. Unbeaufsichtigte Installation von Rollen und Features

Neben der Möglichkeit, Rollen und Features über die PowerShell zu installieren, indem Sie den Namen der Rolle und des Features angeben, können Sie in der PowerShell auch die XML-Steuerungsdatei verwenden, die Sie im Assistenten zum Installieren von neuen Rollen im letzten Fenster speichern können.

Die automatische Installation von Serverrollen über die PowerShell können Sie im Server-Manager vorbereiten

Um auf einem anderen Server die gleichen Rollen und Features zu installieren, verwenden Sie die PowerShell und geben die XML-Datei mit. Dabei verwenden Sie das Cmdlet

Install-WindowsFeature

mit der Option -ConfigurationFilePath, Zum Beispiel

Install-WindowsFeature -ConfigurationFilePath C:\Daten\iis.xml.

Mit einer Konfigurationsdatei erleichtern Sie die Installation von Serverrollen in der PowerShell

5. Update-Verwaltung in der PowerShell

Um Updates in der PowerShell über Skripte zu verwalten, verwenden Sie das kostenlose PowerShell-Modul „Windows Update PowerShell Module“.

Kopieren Sie das Verzeichnis PSWindowsUpdate aus dem Archiv in das Verzeichnis %WINDIR%\System32\WindowsPowerShell\v1.0\Modules. Öffnen Sie die Windows-PowerShell und lassen Sie das Modul mit Import-Module PSWindowsUpdate laden. Danach stehen die CMDlets zur Verfügung. Folgende sind Bestandteil des Moduls:

• Add-WUOfflineSync
• Add-WUServiceManager
• Get-WUHistory
• Get-WUInstall
• Get-WUInstallerStatus
• Get-WUList
• Hide-WUUpdate
• Invoke-WUInstall
• Get-WURebootStatus
• Get-WUServiceManager
• Get-WUUninstall
• Remove-WUOfflineSync
• Remove-WUServiceManager
• Update-WUModule

6. Systemprozesse in der PowerShell überwachen

Eine häufige Administrationsaufgabe ist die Verwaltung der laufenden Prozesse auf einem Server. Über den Befehl

Get-Process

können Sie sich alle laufenden Prozesse eines Computers anzeigen.

Wollen Sie alle Prozesse mit dem Anfangsbuchstaben „S“ angezeigt bekommen, geben Sie den Befehl

Get-Process s*

ein. Sollen die Prozesse zusätzlich noch sortiert werden, zum Beispiel absteigend nach der CPU-Zeit, geben Sie

Get-Process s*

gefolgt von der Pipe-Option

|Sort-Object cpu -Descending

ein.

Systemprozesse überwachen Sie auch in der PowerShell

7. WMI-Abfragen nutzen

Mit Windows Servern haben Sie auch die Möglichkeit über das Windows Management Interface Informationen abzufragen oder zu skripten. Sie können zum Beispiel die Konfiguration der Auslagerungsdatei in der Befehlszeile über WMI vornehmen.

Dabei ist es nicht notwendig sich mit der komplexen WMI-Problematik auseinander zu setzen, sondern über die PowerShell lassen sich diese Daten schnell und einfach ablesen. Ausführliche Informationen zu Festplatten lassen sich zum Beispiel mit WMI-Befehlen abrufen. Dazu gibt es das CMDlet

Get-WmiObject.

Verwenden Sie die Option Win32_LogicalDisk lassen sich sehr ausführliche Informationen zu Festplatten anzeigen.

Wenn Sie das installierte Betriebssystem und das Datum der Installation anzeigen wollen, können ebenfalls WMI und die PowerShell verwenden. Mit dem Befehl

get-wmiobject win32_operatingsystem | select @{Name="Installed"; Expression={$_.ConvertToDateTime($_.InstallDate)}}, Caption zeigen Sie die die entsprechenden Informationen an.

Auch die Bit-Variante des Betriebssystems (Get-WmiObject -Class Win32_ComputerSystem -ComputerName . | Select-Object -Property SystemType), Domäne, Hersteller, Modell und mehr (Get-WmiObject -Class Win32_ComputerSystem) lassen sich anzeigen.

In der PowerShell können Sie umfassende Informationen zum installierten Betriebssystem abrufen, auf Servern und auf Computern.

8. Konfiguration der Startseite in der PowerShell exportieren und importieren – Startseitenlayout vorgeben

In Windows 8.1/10 können Sie mit dem Cmdlet

Export-StartLayout

in der PowerShell das Aussehen und die Konfiguration der Startseite und des Startmenüs in eine Datei exportieren. Sie können diese Funktion auch dazu nutzen auf lokalen Rechnern vorzugeben wie die Startseite aussehen soll. Dazu passen Sie zunächst die Startseite oder das Startmenü an und exportieren diese als XML-Datei. Die Konfigurationsdatei hinterlegen Sie bei den Anwendern als Standard-Seite oder Standard-Startmenü. Auf diesem Weg können Sie entweder alle Apps von der Startseite und dem Startmenü entfernen, oder die Apps auf die Startseite und dem Startmenü integrieren, die Anwender nutzen sollen.

Die Verteilung ist auch über Gruppenrichtlinien mit Windows Server 2012 R2 möglich. Um das aktuelle Layout zu exportieren, geben Sie folgenden Befehl ein:

Export-StartLayout -path <Pfad zur XML-Datei> -As XML

Administratoren in Unternehmensnetzwerken können Veränderungen an der Startseite untersagen. Dazu gibt es ebenfalls in den Richtlinien von Windows 8.1/10 und Windows Server 2012 R2 die Option Startseitenlayout. Diese finden Sie in den Gruppenrichtlinien im Bereich Benutzerkonfiguration/Administrative Vorlagen/Startmenü und Taskleiste. In diesem Bereich können Sie die Layoutdatei hinterlegen, die Sie vorher mit dem neuen Cmdlet

Export-StartLayout

exportiert haben. Das funktioniert auch für lokale Rechner und lokale Richtlinien.

Das Layout der Startseite und des Startmenüs können Sie in der PowerShell exportieren und als Gruppenrichtlinie importieren

(PC-Welt/ad)