PowerShell

    Den letzten Tag eines Monats berechnen

    Der administrative Alltag mit der PowerShell wird nicht nur die großen Herausforderungen in den Themenbereichen ActiveDirectory, Exchange Server 2010, HyperV oder VMWare geprägt, sondern auch durch die vielzitierten Kleinigkeiten, über die man sich als PowerShell-Anwender, der am Anfang steht und den "Guru-Status" noch nicht erreicht hat, lange den Kopf zerbrechen kann.

    Hier eine Kostprobe: Wie lässt das Datum des letzten Wochentags eines Monats ermitteln? Konkret: Welches Datum besitzt der letzte Samstag im Februar?

    Authentifizierung und Verarbeitung von Credentials in PowerShell

    PowerShell-Cmdlets ermöglichen für Zugriffe über das Netzwerk verschiedene Formen der Authenti­fizierung. Neben Kerberos, das standardmäßig für die Anmeldung an eine Domäne verwendet wird, ist die Authentifizierung über Benutzername und Kennwort die gebräuchlichste Form der Authenti­fizierung (der Standard­wert für den Authentication-Parameter, den es bei 18 der insgesamt 236 Cmdlets gibt, lautet „Default“).

    Bei allen auf WS-Management basierenden Cmdlets wie Invoke-Command oder New-PsSession ist über den CertificateThumbprint-Parameter auch eine Authentifizierung über ein Zertifikat möglich (allerdings kann dieses Zertifikat nur einem lokalen Benutzerkonto zugeordnet werden, was die Bedeutung dieser Authenti­fizierungs­varianten deutlich einschränkt).

    Laufwerke ausblenden in Windows 7 mit GPO, Kixtart, Powershell

    Laufwerke im Windows-ExplorerUnter bestimmten Umständen möchte man nicht, dass Anwender alle auf einem PC verfügbaren Laufwerke sehen können. Das trifft besonders auf Terminal-Server zu, auf denen häufig das Laufwerk ausgeblendet werden soll, auf dem sich die Windows-Installation befindet, also in der Regel c:. Diesem Zweck dienen zwei Registry-Einstellungen, die allerdings relativ umständlich berechnet werden müssen. Das kostenlose HideCalc übernimmt diese Aufgabe und erstellt dafür automatisch ADM- oder ADMX-Templates sowie Powershell- und Kixtart-Scripts.

    Uptime von Windows Server remote erfragen über WMI und Powershell

    Der Task-Manager zeigt die seit dem letzten Boot-Vorgang verstrichene Zeit, allerdings nur für den lokalen Rechner.Manchmal möchte man wissen, wie lange ein Windows-Server bereits unterbrechungsfrei läuft, also wie viel Zeit seit dem letzten Boot-Vorgang verstrichen ist. Im Gegensatz zu Linux gehört zum Lieferumfang von Windows kein eigener Befehl für diesen Zweck. Allerdings gibt es verschiedene Möglichkeiten, diese Information auszulesen, und zwar auch remote.

    Windows-Dienst remote neu starten mit sc.exe oder Powershell

    Muss man eine Anwendung, die als Windows-Service läuft, neu starten, dann geht das relativ unkompliziert über die entsprechende GUI-Anwendung im Startmenü unter Verwaltung => Dienste (bzw. über services.msc im direkten Aufruf). Dies funktioniert auch remote, wenn man sich über das Menü Aktion mit einem anderen Computer verbindet. Will man diesen Vorgang jedoch auf mehreren Rechnern ausführen oder in einem Script anstoßen, dann hilft das Kommandozeilen-Tool sc.exe oder Powershell.

    Prozess-ID und Name von Diensten auslesen mit eigenen Powershell-Properties

    Die Stärken der PowerShell liegen in der Leichtigkeit, mit der sich neue Objekte definieren und vorhandenen Objekte neue Properties anhängen lassen. Das Ganze ist viel einfacher, als es sich zunächst anhört. Hat man den sprichwörtlichen Bogen erst einmal raus, ergeben sich unzählige Möglichkeiten beliebige Ergebnisse über eine individuelle Property an einen Objekt-Output anzuhängen.

    Server remote herunterfahren oder neu starten mit Powershell

    Zur Fernwartung von Computern gehört, dass man sie bei Bedarf remote neu starten oder herunterfahren kann. Windows bietet dafür eigene Bordmittel an, darüber hinaus existieren externe Tools für diesen Zweck. Die Powershell-Cmdlets Restart-Computer und Stop-Computer sind nicht nur innerhalb von Scripts die bevorzugten Mittel, sondern bieten auch auf der Kommandozeile einige interessante Optionen.

    Gelöschte Active-Directory-Objekte wiederherstellen mit PowerShell

    Wird ein AD-Objekt wie zum Beispiel ein User-Objekt gelöscht, ist es noch nicht ganz verloren. Es wird bekanntlich in einen speziellen Container (auch Tombstone genannt) mit dem Namen "CN=Deleted Objects" verschoben, indem es in der Regel noch 180 Tage (dieser Wert kann variieren) frisch gehalten wird. Dieser Container wird in der regulären Active Directory Benutzer- und Computer-Konsole nicht angezeigt, kann aber mit dem Tool Ldp.exe sichtbar gemacht werden.