get-help: Hilfe für PowerShell-Cmdlets


    Tags: ,

    Einige PowerShell-Cmdlets können auf entfernte Computer zugreifenGrundlegende Kenntnisse über den Aufruf der PowerShell selbst, von Befehlen und Scripts bleiben sehr theoretischer Natur, wenn man nicht weiß, was man eigentlich an Cmdlets zur Verfügung hat, was diese leisten können und welche Parameter sie akzeptieren. Die Auswahl hängt konkret davon ab, welche Module geladen sind; so gibt es etwa im Startmenü von Domänen-Controllern einen PowerShell-Link, der die Active-Directory-Module gleich beim Start lädt und so Cmdlets für die AD-Verwaltung zur Verfügung stellt. Den gleichen Effekt hat man, wenn man in einer "normalen" PowerShell den Befehl

    Import-Module ActiveDirectory

    ausführt. Grundlegende Module gibt es immer und PowerShell bietet ein internes Hilfesystem, um mit diesen effektiv zu arbeiten.

    Tab-Vervollständigung und interne Hilfe

    Get-Help erläutert detailliert z.B. die Verwendung einzelner Parameter …Wie unter ausgereiften Shells unter Unix oder Linux gewohnt, beherrscht PowerShell Tab-Vervollständigung, und zwar nicht nur auf die spartanische Art von cmd.exe, sondern richtig. Vervollständigt werden also nicht nur Datei- und Verzeichnisnamen, sondern auch ausführbare Dateien im Pfad, PowerShell-Cmdlets und deren Parameter. Ladbare Module vervollständigt PowerShell leider nicht.

    Auch das interne Hilfe-Cmdlet Get-Help erinnert sehr an das man-Kommando einer unixoiden Shell. Durch spezielle Parameter wird es jedoch mächtiger als sein Vorbild:

    -Parameter

    Diese Option erklärt einen speziellen Parameter genau, also wozu er dient, welche Argumente er akzeptiert und ob es eine Voreinstellung gibt. Das Ganze funktioniert natürlich rekursiv; genaueres erklärt der PowerShell-Befehl

    Get-Help Get-Help -Parameter Parameter

    Gibt man für den zu erklärenden Befehl eine Wildcard an, gibt Get-Help alle darauf passenden Cmdlets aus, die diesen Parameter akzeptieren. Mit

    Get-Help * -Parameter ComputerName

    Einige PowerShell-Cmdlets können auf entfernte Computer zugreifenetwa erfährt man, welche Cmdlets die Option ComputerName kennen – diese etwa können auf anderen Computern ausgeführt werden. Dafür werden in der Regel Administrator-Rechte benötigt. Auf Arbeitsgruppen­rechnern wird die Weitergabe von Admin-Rechten über das Netz normalerweise durch die UAC blockiert und muss erst explizit erlaubt werden. Außerdem muss in der Firewall des fern­zusteuern­den Rechners eine Ausnahme für die Remote­ver­waltung definiert sein.

    -Examples, -Detailed und -Full

    -Examples liefert Beispiele zur Anwendung des Cmdlets. Der Teil mit der grundsätzlichen Erklärung fehlt hier. Die Cmdlet-Erklärung an sich, die Erklärung aller Parameter und alle Beispiele liefert die Option -Detailed. Alles verfügbare Material, inklusive Datentypen für die Input- und Output-Objekte, liefert -Full.

    -Online

    Diese Option ruft die Hilfe zu dem entsprechenden Cmdlet in Microsofts TechNet-Referenz im Standard-Browser auf. Wildcards sind hier nicht erlaubt, man muss nach einem konkreten Cmdlet fragen.

    Online-Ressourcen

    Das TechNet-Handbuch zur PowerShell ist vor allem als Referenz zum Nachschlagen geeignet. Eine lebendige Community mit Antworten auf Benutzeranfragen, Tipps und Anregungen hat sich rund um das TechNet-Script Center gebildet; zu erwähnen ist hier insbesondere der Blog „Hey, Scripting Guy!“.

    2 Kommentare

    Bild von Lukas
    Lukas sagt:
    11. Oktober 2011 - 13:24

    I tried to execute a powershell script on a Win 2k3 Server several times. The Problem is that the script is executed via an MS_BUILD xml file. The basic function of this Script should be: To open an existing Word Document,Replace some Words, and save it.

    When I execute the script via the Command line. It works well, but when the Script is executed via the xml file some functions throw an error.

    The Error is:

    You cannot call a method on a null-valued expression.
    [Exec] + $OpenDoc.SaveAs <<<< ([ref]$filename)
    [Exec] + CategoryInfo : InvalidOperation: (SaveAs:String) [], RuntimeException
    [Exec] + FullyQualifiedErrorId : InvokeMethodOnNull

    The Problem is that every function that deals with Word - Operation throws the same error.

    Is it possbile that the Word document cannot be opened owing to the execution out of the xml file?

    Is there a way to determine whether the Word Document has been found and opened properly?

    Bild von Peter Monadjemi2
    Peter Monadjemi2 sagt:
    11. Oktober 2011 - 18:51

    Hello Lukas,

    I can answer only in a very general manner because I haven't exactly understood what the specific reasons for this error could be.

    The general reason for this error is that for some reasons the variable $OpenDoc has no value - its value is $null.

    For some reasons Word couldn't start within the script.

    It shouldn't make a difference that the PowerShell script is executed within a MSbuild xml file (are you using a custom task or is the PowerShell script included in the MsBuild file?)

    Regards,
    Peter