Hilfe für PowerShell-Cmdlets

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 (Besucher) sagt:

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 (Besucher) sagt:

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

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn mit der von Ihren angegebenen Mail-Adresse ein Gravatar verknüpft ist, dann wird dieser neben Ihrem Kommentar eingeblendet.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Zeilen und Absätze werden automatisch erzeugt.
  • Mail-Adressen werden im Seitenquelltext unkenntlich gemacht, um sie vor dem automatischen Erfassen durch Spammer zu schützen.

Weitere Informationen über Formatierungsoptionen