Sprache - Language: Deutsch English Seite zuletzt geändert am 28.11.2006 durch webmaster@gerhard1.de¹

Benutzung der Windows Powershell

Im Microsoft TechNet NewsFlash 24/2006 vom 23. November 2006 hat Microsoft bekannt gemacht, daß die Windows PowerShell - die neue Shell für Windows - da ist und aus dem Internet heruntergeladen werden kann.
Voraussetzung für die Nutzung von Windows PowerShell ist die Installation des .NET Framework 2.0.

In der ganzen bereitgestellten Information steht viel blabla, auch natürlich wirklich Wichtiges. Aber das Allerwichtigste, um sinnvoll damit beginnen zu können, wird mit keinem Wort erwähnt, nämlich, wie eigene Cmdlets aussehen müssen und wie sie aufgerufen werden.

Datei-Typ für Cmdlets

Irgendwo in der Dokumentation ist so nebenbei noch erwähnt, daß die Datei-Erweiterung für Powershell-Scripts ".ps1" ist.
Eine Kennzeichnung des Scripts mit, z.B.,
#!msh
in der ersten Zeile, wie bei Unix üblich, ist nicht erforderlich, schadet aber auch nicht.

Aufruf des Cmdlets

Somit sieht eigentlich alles ganz einfach aus: Mit dem Editor eine Textdatei mit der Endung .ps1 statt .txt erstellen und in der Powershell oder einem Powershell-Skript aufrufen.
Aber weit gefehlt: Man erhält daraufhin nur die Fehlermeldung 'Die Benennung "program1.ps1" wurde nicht als Cmdlet, Funktion, ausführbares Programm oder Skriptdatei erkannt. Überprüfen Sie die Benennung, und versuchen Sie es erneut.', mit der man recht wenig anfangen kann. Das passiert unverständlicherweise auch dann, wenn man vorher das "current directory" auf das Verzeichnis setzt, in dem sich das Programm befindet.
Es funktioniert nur auf eine der folgenden Arten:

  1. Die Datei wird mit dem vollen Pfadnamen aufgerufen. Das ist aber nicht besonders gut, weil das Cmdlet dann nicht portabel zwischen verschiedenen Windows-Installationen ist.
  2. Die Datei befindet sich im "current directory". Sie wird dann aufgerufen als
    ./dateiname
    wobei ".", wie von Unix bekannt, für das gerade aktive Verzeichnis steht oder dasjeneige, in dem sich die rufende Datei befindet. Dabei ist es egal, ob nach dem "." ein "/" oder ein "\" folgt.
    Daß die Datei ohne den Zusatz "./" nicht als Powershell-Skript erkannt wird, ist vermutlich ein Programmfehler.
  3. Das sinnvollste wäre sicher eine System-Variable, die einen Suchpfad angibt, wie es früher in der config.sys mit "path=" üblich war. Eine solche Möglichkeit ist mir jedoch nicht bekannt.
Die Angabe des Dateityps (der Erweiterung .ps1) ist dabei nicht erforderlich.

PowerShell Execution Policy - Registry Änderung

Aber mit dem Aufruf ist man immer noch nicht am Ziel.
Man erhält jetzt die Fehlermeldung 'Die Datei "C:\PowerShellPrograms\Program1.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen erhalten Sie mit "get-help about_signing".'. Der Grund: Aus Sicherheitsgründen ist die Ausführung von eigenen Powershell-Scripts per Default deaktiviert.
Es gibt 2 Möglichkeiten, sie ausführbar zu machen:

  1. Man gibt in der Powershell selbst ein:
    set-executionpolicy RemoteSigned
    Es gibt noch 2 andere Einstellungsmöglichkeiten: Unrestricted und AllSigned. Das erste ist gegen Internet-Angriffe zu unsicher, das zweite für eigene Scripts (viel) zu mühsam.
  2. Man macht die Änderung mit regedit direkt in der registry. Dazu sucht man den Eintrag für
    HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell (in manchen Systemen auch HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.Management.Automation.ps1)
    und trägt dort ein:
    REG_SZ ExecutionPolicy RemoteSigned

Danach sollte man auch eigene Powershell-Scripts ausführen und damit die Powershell sinnvoll nutzen können.

 

Document www.gmusoft.de/information/windows/WindowsPowerShell.htm
Created by: Gerhard Mueller, Germany, Herrenberg, mail@gmusoft.de¹
Responsibility for this page and comments to: http://www.gmusoft.de/gmuweb.htm
Creation/change date: 26.11.2006/28.11.2006
Impressum
Benutzungshinweise
Nutzungsbedingungen
¹ Bitte schreiben Sie Mail-Adressen evtl. ab statt sie zu kopieren, sie sind (hoffentlich) gegen Adressensammler für Spam geschützt kodiert.
  In irgendeiner Darstellung auftauchende "x" in Mail-Adressen ignorieren bzw. löschen Sie bitte, sie gehören nicht zur korrekten Adresse!

Suchworte: Anwendung der Windows Powershell Benutzung Use of the Windows powershell usage