about_PowerShell_exe

Kurze Beschreibung

Erläutert die Verwendung der powershell.exe Befehlszeilenschnittstelle. Zeigt die Befehlszeilenparameter an und beschreibt die Syntax.

Lange Beschreibung

SYNTAX

PowerShell[.exe]
    [-PSConsoleFile <file> | -Version <version>]
    [-NoLogo]
    [-NoExit]
    [-Sta]
    [-Mta]
    [-NoProfile]
    [-NonInteractive]
    [-InputFormat {Text | XML}]
    [-OutputFormat {Text | XML}]
    [-WindowStyle <style>]
    [-EncodedCommand <Base64EncodedCommand>]
    [-ConfigurationName <string>]
    [-File - | <filePath> <args>]
    [-ExecutionPolicy <ExecutionPolicy>]
    [-Command - | { <script-block> [-args <arg-array>] }
                | { <string> [<CommandParameters>] } ]

PowerShell[.exe] -Help | -? | /?

Parameter

-PSConsoleFile <FilePath>

Lädt die angegebene PowerShell-Konsolendatei. Geben Sie den Pfad und Namen der Konsolendatei ein. Verwenden Sie zum Erstellen einer Konsolendatei das Cmdlet Export-Console in PowerShell.

-Version <PowerShell Version>

Startet die angegebene Version von PowerShell. Gültige Werte sind 2.0 und 3.0. Die Version, die Sie angeben, muss auf dem System installiert sein. Wenn Windows PowerShell 3.0 auf dem Computer installiert ist, ist "3.0" die Standardversion. Andernfalls ist "2.0" die Standardversion. Weitere Informationen finden Sie unter Installieren von PowerShell.

Blendet die Copyrightinformationen beim Start aus.

-NoExit

Nach dem Ausführen der Startbefehle erfolgt kein Beenden.

-Sta

Startet PowerShell mit einem Singlethread-Apartment. In Windows PowerShell 2.0 ist Multithread-Apartment (MTA) die Standardeinstellung. In Windows PowerShell 3.0 ist Singlethread-Apartment (STA) die Standardeinstellung.

-Mta

Startet PowerShell mit einem Multithread-Apartment. Dieser Parameter wird in Windows PowerShell 3.0 eingeführt. In PowerShell 2.0 stellt Multithread-Apartment (MTA) die Standardeinstellung dar. In PowerShell 3.0 ist Singlethread-Apartment (STA) die Standardeinstellung.

-NoProfile

Das PowerShell-Profil wird nicht geladen.

-NonInteractive

Zeigt dem Benutzer keine interaktive Eingabeaufforderung.

-InputFormat {Text | XML}

Beschreibt das Format der Daten, die an PowerShell übermittelt werden. Gültige Werte sind "Text" (Textzeichenfolgen) oder "XML" (serialisiertes CLIXML-Format).

-OutputFormat {Text | XML}

Bestimmt, wie die Ausgabe von PowerShell formatiert ist. Gültige Werte sind "Text" (Textzeichenfolgen) oder "XML" (serialisiertes CLIXML-Format).

-WindowStyle <Window style>

Legt den Fensterstil für die Sitzung fest. Gültige Werte sind „Normal“, „Minimized“, „Maximized“ und „Hidden“.

-EncodedCommand <Base64EncodedCommand>

Akzeptiert eine „base-64“-codierte Zeichenfolgenversion eines Befehls. Verwenden Sie diesen Parameter, um Befehle an PowerShell zu übermitteln, die komplexe Anführungszeichen oder geschweifte Klammern erfordern. Die Zeichenfolge muss mit UTF-16LE-Zeichencodierung formatiert werden.

-ConfigurationName <string>

Gibt einen Konfigurationsendpunkt an, in dem PowerShell ausgeführt wird. Dies kann ein beliebiger Endpunkt sein, der auf dem lokalen Computer registriert ist, einschließlich der standardmäßigen PowerShell-Remotingendpunkte oder eines benutzerdefinierten Endpunkts mit bestimmten Benutzerrollefunktionen.

-File – | <filePath> <args>

Wenn der Wert von File "-" lautet, wird der Befehlstext aus der Standardeingabe gelesen. Die powershell -File - Ausführung ohne umgeleitete Standardeingabe startet eine reguläre Sitzung. Dies ist identisch mit der Angabe des File-Parameters überhaupt nicht.

Wenn der Wert von File ein Dateipfad ist, wird das Skript im lokalen Bereich ("dot-sourced") ausgeführt, sodass die vom Skript erstellten Funktionen und Variablen in der aktuellen Sitzung verfügbar sind. Geben Sie den Pfad der Skriptdatei und Parameter an. File muss der letzte Parameter im Befehl sein. Alle Werte, die nach dem File-Parameter typt werden, werden als Skriptdateipfad und Parameter interpretiert, die an dieses Skript übergeben werden.

Parameter, die an das Skript übergeben werden, werden als Zeichenfolgenliterale übergeben (nach der Interpretation durch die aktuelle Shell). Wenn Sie sich beispielsweise in dercmd.exeund einen Umgebungsvariablenwert übergeben möchten, verwenden Sie die cmd.exeSyntax: powershell.exe -File .\test.ps1 -TestParam %windir%

Im Gegensatz dazu führt die Ausführung incmd.exedazu, dass das Skript die literale Zeichenfolge empfängt, da sie keine besondere Bedeutung für die aktuellecmd.exepowershell.exe -File .\test.ps1 -TestParam $env:windir $env:windir hat. Der $env:windir Stil des Umgebungsvariablenverweises kann in einem Command-Parameter verwendet werden, da er dort als PowerShell-Code interpretiert wird.

Wenn Sie den gleichen Befehl aus einem Batch-Skript ausführen möchten, würden Sie anstelle von oder verwenden, um das aktuelle %~dp0 .\ $PSScriptRoot Ausführungsverzeichnis zu repräsentieren: powershell.exe -File %~dp0test.ps1 -TestParam %windir% . Wenn Sie stattdessen verwendet .\test.ps1 haben, würde PowerShell einen Fehler auslösen, da der Literalpfad nicht finden kann. .\test.ps1

Wenn der Wert von File ein Dateipfad ist, muss File der letzte Parameter im Befehl sein, da alle Zeichen, die nach dem File-Parameternamen typ sind, als Skriptdateipfad gefolgt von den Skriptparametern interpretiert werden.

Sie können die Skriptparameter und -werte in den Wert des File-Parameters angeben. Beispiel: -File .\Get-Script.ps1 -Domain Central

Die Switch-Parameter eines Skripts werden in der Regel entweder einbezogen oder ausgelassen. Der folgende Befehl verwendet beispielsweise den All-Parameter der Get-Script.ps1 Skriptdatei: -File .\Get-Script.ps1 -All

In seltenen Fällen müssen Sie möglicherweise einen booleschen Wert für einen Parameter angeben. Es ist nicht möglich, einen expliziten booleschen Wert für einen switch-Parameter zu übergeben, wenn ein Skript auf diese Weise ausgeführt wird. Diese Einschränkung wurde in PowerShell 6 () pwsh.exe entfernt.

-ExecutionPolicy <ExecutionPolicy>

Legt die Standardausführungsrichtlinie für die aktuelle Sitzung fest und speichert sie in der $env:PSExecutionPolicyPreference Umgebungsvariablen. Dieser Parameter ändert nicht die PowerShell-Ausführungsrichtlinie, die in der Registrierung festgelegt ist. Weitere Informationen zu PowerShell-Ausführungsrichtlinien (einschließlich einer Liste gültiger Werte) finden Sie unter about_Execution_Policies.

-Command

Führt die angegebenen Befehle (und alle Parameter) so aus, als ob sie an der PowerShell-Eingabeaufforderung eingeben worden wäre, und wird dann beendet, es sei denn, der Parameter NoExit ist angegeben.

Der Wert von Command kann - , ein Skriptblock oder eine Zeichenfolge sein. Wenn der Wert von Command - ist, wird der Befehlstext aus der Standardeingabe gelesen.

Der Command-Parameter akzeptiert nur dann einen Skriptblock für die Ausführung, wenn er den an Command übergebenen Wert als ScriptBlock-Typ erkennen kann. Dies ist nur möglich, wenn sie von einem anderen powershell.exe PowerShell-Host aus ausgeführt wird. Der ScriptBlock-Typ kann in einer vorhandenen Variablen enthalten sein, von einem Ausdruck zurückgegeben oder vom PowerShell-Host als literaler Skriptblock analysiert werden, der in geschweifte Klammern () eingeschlossen ist, bevor er an übergeben {} powershell.exe wird.

powershell -Command {Get-WinEvent -LogName security}

In gibt es keinen Skriptblock cmd.exe (oder ScriptBlock-Typ), sodass der an Command übergebene Wert immer eine Zeichenfolge ist. Sie können einen Skriptblock innerhalb der Zeichenfolge schreiben, aber anstatt ausgeführt zu werden, verhält er sich genau so, als ob Sie ihn an einer typischen PowerShell-Eingabeaufforderung eingegeben hätten, wobei der Inhalt des Skriptblocks wieder an Sie ausgegeben wird.

Eine an Command übergebene Zeichenfolge wird weiterhin als PowerShell-Code ausgeführt, sodass die geschweiften Klammern des Skriptblocks bei der Ausführung von häufig gar nicht erforderlich cmd.exe sind. Zum Ausführen eines Inlineskriptblocks, der in einer Zeichenfolge definiert ist, kann der Aufrufoperator & verwendet werden:

powershell.exe -Command "& {Get-WinEvent -LogName security}"

Wenn der Wert von Command eine Zeichenfolge ist, muss Command der letzte Parameter für pwsh sein, da alle darauf folgenden Argumente als Teil des auszuführenden Befehls interpretiert werden.

Wenn die Ergebnisse aus einer vorhandenen PowerShell-Sitzung aufgerufen werden, werden sie als deserialisierte XML-Objekte und nicht als Liveobjekte an die übergeordnete Shell zurückgegeben. Für andere Shells werden die Ergebnisse als Zeichenfolgen zurückgegeben.

Wenn der Wert von Command - ist, wird der Befehlstext aus der Standardeingabe gelesen. Sie müssen die Standardeingabe umleiten, wenn Sie den Command-Parameter mit Standardeingabe verwenden. Beispiel:

@'
"in"

"hi" |
  % { "$_ there" }

"out"
'@ | powershell -NoProfile -Command -

Dieses Beispiel erzeugt die folgende Ausgabe:

in
hi there
out

Der Prozessendcode wird durch den Status des letzten (ausgeführten) Befehls innerhalb des Skriptblocks bestimmt. Der Exitcode ist 0 , wenn ist oder wenn $? $true 1 $? $false ist. Wenn der letzte Befehl ein externes Programm oder ein PowerShell-Skript ist, das explizit einen anderen Exitcode als oder fest legt, wird dieser Exitcode für den Prozessendcode in 0 1 1 konvertiert. Um den spezifischen Exitcode beizubehalten, fügen exit $LASTEXITCODE Sie zu Ihrer Befehlszeichenfolge oder ihrem Skriptblock hinzu.

Auf ähnliche Weise wird der Wert 1 zurückgegeben, wenn ein Skriptabschlussfehler (runspace-terminating) auftritt, z. B. oder throw , oder wenn die Ausführung mit -ErrorAction Stop STRGC unterbrochen - wird.

-Help, -?, /?

Zeigt Hilfe für PowerShell.exean. Wenn Sie einen PowerShell.exe Befehl in einer PowerShell-Sitzung eingeben, stellen Sie den Befehlsparametern einen Bindestrich (-) voran, keinen Schrägstrich (/). Sie können entweder einen Bindestrich oder einen Schrägstrich in cmd.exe verwenden.

ANMERKUNGEN

Hinweis zur Problembehandlung: In PowerShell 2.0 schlägt das Starten einiger Programme über die PowerShell-Konsole mit dem LastExitCode-0xc0000142 fehl.

EXAMPLES

# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1

# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML

# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"

# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}

# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"

# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand