Get-Date, DisplayHint und Format

Mit dem Cmdlet Get-Date lässt sich ein DateTime-Objekt abrufen. Dieses Objekt umfasst sowohl Datum als auch Uhrzeit. Die Verwendung von Get-Date ohne Parameter führt zur Ausgabe des aktuellen Datums und der Uhrzeit entsprechend dem Format der aktuellen Ländereinstellungen. Benötigt man nur das Datum oder nur die Uhrzeit, kann dies mit dem Parameter DisplayHint beeinflusst werden. Mit diesem Parameter wird jedoch nur auf die Darstellung Einfluss genommen – das Ergebnis ist weiterhin eine DateTime-Objekt mit Datum und Uhrzeit.

Das der Parameter –DisplayHint wirklich nur die Ausgabe beeinflusst, zeigt das nächste Beispiel. Bei den ersten beiden Befehlen erscheint immer das gleiche Ergebnis, obwohl beim ersten Mal das Datum und beim zweiten Mal die Zeit gewünscht wurde.

Die einzelnen Elemente lassen sich zwar aus dem DateTime-Objekt auslesen, allerdings müsste man sich so die Ausgabe quasi selbst zusammenbasteln.

Diese Aufgabe lässt sich elegant mit dem Parameter –Format erledigen. Hier genügt die Übergabe des gewünschten Formats – im nachfolgenden Beispiel d für Datum und t für die Zeit. Bei Verwendung der Formatangabe, liefert die PowerShell kein System.DateTime-Objekt zurück, sondern einen String!

PowerShell Hilfe mit Get-Help

Die PowerShell besitzt ein umfangreiches und hervorragendes Hilfesystem. Das Cmdlet Get-Help zeigt Hilfe zu PowerShell Cmdlets und Konzepten der PowerShell an. man ist ein Alias für help. help ist kein Alias, sondern eine Funktion. Der Unterschied von man und help im Gegensatz zum Cmdlet Get-Help ist der, dass während Get-Help den Hilfetext komplett auf einmal ausgibt, bei Verwendung von help oder man der Hilfetext seitenweise in der Konsole ausgegeben und am unteren Rand der Hinweis — Fortsetzung — erscheint. Ein Druck auf die Eingabetaste (Enter) zeigt die nächste Zeile an, ein Druck auf die Leertaste zeigt die nächste Seite an. Diese Funktionalität erreicht man auch mit Get-Help | more

Aus der Syntax des Cmdlets ist erkennbar, dass entweder ein Cmdlet-Name oder ein Thema angegeben werden kann, für die Hilfe benötigt wird. Hier lassen sich auch wieder Platzhalter wie *, Fragezeichen oder Bereiche in eckigen Klammern einsetzen. Verwendet man Get-Help * werden alle verfügbaren Hilfethemen aufgelistet. Möchte man sich einen Überblick verschaffen, welche Hilfethemen zu Get- verfügbar sind, genügt die Eingabe von Get-Help Get-*. Ein weiteres Beispiel wäre die Auflistung verfügbarer Hilfethemen zu Get- und Set- mit Get-Help [gs]et-*

Sofern man umfangreiche Hilfe zum Cmdlet Get-Help haben möchte, empfiehlt sich die Verwendung von Get-Help Get-Help –full. Man erhält dann neben einer ausführlicheren Beschreibung auch eine ganze Menge an Beispielen zum Einsatz von Get-Help. Möchte man lediglich die Beispiele sehen, verwendet man anstelle von –full einfach –examples. Die Parameter-Schalter –full und –examples funktionieren natürlich auch bei anderen Hilfethemen.

Eine konkrete Hilfe zu einem Cmdlet erhalten sie, indem sie den Namen des Cmdlets mit angeben. Die Eingabe von Get-Help Get-Process liefert beispielsweise Hilfe zum Cmdlet Get-Process.

Texte kopieren/einfügen über die Zwischenablage

In der PowerShell lassen sich Texte in die Zwischenablage kopieren oder aus dieser einfügen. Es lassen sich auch mehrere Zeilen markieren und einfügen. Bei aktiviertem QuickEdit-Modus ist die Handhabung am einfachsten. Per Voreinstellung ist der QuickEdit-Modus aktiviert. Eine Markierung kann entweder über das Menü Bearbeiten erfolgen oder direkt mit der Maus. Mit einem Klick auf die rechte Maustaste wird der Text in die Zwischenablage kopiert. Positioniert man anschließend den Eingabecursor an die gewünschte Stelle und drückt abermals die rechte Maustaste, wird Text aus der Zwischenablage an dieser Stelle eingefügt.

Abbildung, Markierter Text in der PowerShell wird durch Klicken mit der rechten Maustaste in die Zwischenablage übernommen. Dann wird die Markierung entfernt.

Abbildung, Mit einem rechten Mausklick wird Text aus der Zwischenablage an der aktuellen Cursorposition eingefügt

Unblock-File

Dateien, die von einem anderen Computer oder auch aus dem Internet stammen, werden per Vorgabe aus Sicherheitsgründen blockiert. Ruft man beispielsweise unter Windows 7 für eine blockierte Datei über das Kontextmenü Eigenschaften das Dialogfenster Eigenschaften von <Datei> auf, wird auf der Registerkarte Allgemein im unteren Bereich der Schalter Zulassen angeboten, so dass die Blockade damit aufgehoben werden kann.

Mit dem seit der PowerShell 3.0 vorhandenen Cmdlet Unblock-File lässt sich dieser Vorgang direkt durch PowerShell erledigen. Nach Angabe der betreffenden Datei bzw. Dateien, wird die Blockade durch das Cmdlet aufgehoben. Dies lässt sich durch einen erneuten Aufruf des Eigenschaften-Dialog verifizieren – der Schalter zum Zulassen ist verschwunden. Vorsichtig sollte man beim Einsatz von Wildcards sein und gegebenenfalls die Schalter –WhatIf, -Confirm oder –Verbose einsetzen.

Generell sollte man sich angewöhnen, Skripten aus anderen Quellen – auch wenn die Quelle vertrauenswürdig ist – nicht einfach blind zu vertrauen. Vor dem Einsatz empfiehlt es sich erst entsprechende Tests durchzuführen.

Klassische DOS-Shell in der PowerShell

Innerhalb der Powershell kann durch die Eingabe von cmd die klassische DOS-Kommandoshell (MS-DOS Eingabeaufforderung) ausgeführt werden. Das kann insbesondere beim Umstieg von der DOS-Kommandoshell auf die PowerShell sehr hilfreich sein. So wechselte ich persönlich anfangs häufiger nach Bedarf kurz in die gewohnte Umgebung, wenn ein Befehl nicht wie gewohnt funktionierte und ich momentan keine Zeit hatte herauszufinden wie ich das mit der PowerShell lösen kann. Ich konnte also kurz in die alte Welt zurückwechseln und meine Aufgabe umgehend erledigen ohne die PowerShell verlassen zu müssen. Dies funktioniert beispielsweise auch mit WMIC (Windows Management Instrumentation Command-Line).

Nach der Eingabe von cmd ändert sich der Kommandoprompt. Wie man erkennt, steht das PS nicht mehr vor dem Prompt. Nun lassen sich DOS-Kommandos wie gewohnt verwenden. Mit Eingabe von exit wird die DOS-Kommandoshell beendet. Wieder zurück in der Powershell, führt der gleiche Befehl zu einem Fehler.

Durch Einsatz der klassischen DOS-Kommandoshell innerhalb der PowerShell, lassen sich auch bereits für die klassische DOS-Shell erstellte Batchfiles problemlos nutzen. Beim Aufruf einer Stapeldatei (Dateiextension .BAT) wird durch die PowerShell automatisch eine DOS-Kommandoshell gestartet. Aufgrund der erhöhten Sicherheitsziele der PowerShell, kann eine Stapeldatei jedoch – genau wie PowerShell-Skripte – nicht einfach durch Eingabe des Dateinamens gestartet werden. Zur Ausführung ist die Angabe des kompletten Pfades oder ein relativer Pfad anzugeben. Hat man beispielsweise die Stapeldatei myjob.bat im aktuellen Verzeichnis liegen, kann die Ausführung mit .\myjob.baterfolgen. Ohne die Angabe von .\zeigt die PowerShell eine Fehlermeldung und obendrein auch noch gleich den Weg zur Lösung des Problems an.