about_Pwsh
Kurze Beschreibung
Erläutert, wie der pwsh
Befehl-line-Schnittstelle verwendet wird. Zeigt den Befehl-line-Parameter an und beschreibt die Syntax.
Lange Beschreibung
Informationen zu den Befehl-line-Optionen für Windows PowerShell 5.1 finden Sie unter about_PowerShell_exe.
Syntax
Usage: pwsh[.exe]
[-Login]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <string> [<CommandParameters>] } ]
[[-CommandWithArgs <string>] [<CommandParameters>]]
[-ConfigurationFile <filePath>]
[-ConfigurationName <string>]
[-CustomPipeName <string>]
[-EncodedCommand <Base64EncodedCommand>]
[-ExecutionPolicy <ExecutionPolicy>]
[-InputFormat {Text | XML}]
[-Interactive]
[-MTA]
[-NoExit]
[-NoLogo]
[-NonInteractive]
[-NoProfile]
[-NoProfileLoadTime]
[-OutputFormat {Text | XML}]
[-SettingsFile <filePath>]
[-SSHServerMode]
[-STA]
[-Version]
[-WindowStyle <style>]
[-WorkingDirectory <directoryPath>]
pwsh[.exe] -h | -Help | -? | /?
Parameter
Bei allen Parametern wird die Groß-/Kleinschreibung-ibeachtet.
-File | -f
Der Wert der Datei kann ein Dateipfad und optionale Parameter sein -
. Wenn der Wert der Datei lautet -
, werden Befehle aus der Standardeingabe gelesen.
Dies ist der Standardparameter, wenn keine Parameter vorhanden sind, aber Werte in der Befehlszeile vorhanden sind. Das angegebene Skript wird im lokalen Bereich ("dot-sourced") der neuen Sitzung ausgeführt, sodass die vom Skript erstellten Funktionen und Variablen in einer neuen Sitzung verfügbar sind. Geben Sie den Skriptdateipfad und alle Parameter ein. Die Datei muss der letzte Parameter im Befehl sein, da alle Zeichen, die nach dem Dateinamen des Dateiparameters eingegeben wurden, als Skriptdateipfad interpretiert werden, gefolgt von den Skriptparametern.
Die Switch-Parameter eines Skripts werden in der Regel entweder einbezogen oder ausgelassen.
Der folgende Befehl verwendet beispielsweise den Parameter "Alle " 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 Switch-Parameter angeben. Um einen booleschen Wert für einen Switch-Parameter im Wert des File-Parameters bereitzustellen, verwenden Sie den Parameter normalerweise unmittelbar gefolgt von einem Doppelpunkt und dem booleschen Wert, z. B. den folgenden: -File .\Get-Script.ps1 -All:$False
Parameter, die an das Skript übergeben werden, werden als Zeichenfolgenliterale übergeben (nach der Interpretation durch die aktuelle Shell). Wenn Sie cmd.exe
beispielsweise einen Umgebungsvariablenwert übergeben möchten, verwenden Sie die cmd.exe
Syntax: pwsh -File .\test.ps1 -TestParam %windir%
Im Gegensatz dazu führt die Ausführung pwsh -File .\test.ps1 -TestParam $env:windir
in cmd.exe
dem Skript, das die Literalzeichenfolge $env:windir
empfängt, da sie keine besondere Bedeutung für die aktuelle cmd.exe
Shell hat. Der $env:windir
Stil des Umgebungsvariablenverweises kann in einem Command-Parameter verwendet werden, da er als PowerShell-Code interpretiert wird.
Wenn Sie denselben Befehl aus einem Batchskript ausführen möchten, verwenden %~dp0
Sie anstelle oder $PSScriptRoot
.\
zum Darstellen des aktuellen Ausführungsverzeichnisses: pwsh -File %~dp0test.ps1 -TestParam %windir%
Wenn Sie stattdessen verwenden .\test.ps1
, löst PowerShell einen Fehler aus, da er den Literalpfad nicht finden kann. .\test.ps1
Hinweis
Der File-Parameter kann Skripts nicht mit einem Parameter unterstützen, der ein Array von Argumentwerten erwartet. Dies ist leider eine Einschränkung, wie ein systemeigener Befehl Argumentwerte abruft. Wenn Sie eine systemeigene ausführbare Datei (z powershell
. B. oder pwsh
) aufrufen, wissen Sie nicht, was mit einem Array zu tun ist, sodass sie als Zeichenfolge übergeben wird.
Wenn der Wert der Datei lautet -
, werden Befehle aus der Standardeingabe gelesen.
Wird pwsh -File -
ohne umgeleitete Standardeingabe ausgeführt, wird eine normale Sitzung gestartet. Dies ist identisch mit der Angabe des File
Parameters überhaupt nicht. Beim Lesen von Standardeingaben werden die Eingabeanweisungen jeweils jeweils so ausgeführt, als ob sie an der PowerShell-Eingabeaufforderung eingegeben wurden. Wenn eine Anweisung nicht richtig analysiert wird, wird die Anweisung nicht ausgeführt. Der Prozessendecode wird durch den Status des letzten (ausgeführten) Befehls innerhalb der Eingabe bestimmt. Bei normaler Beendigung ist der Ausgangscode immer 0
. Wenn die Skriptdatei mit einem exit
Befehl beendet wird, wird der Prozessendecode auf das numerische Argument festgelegt, das mit dem exit
Befehl verwendet wird.
Ähnlich wie -Command
, wenn ein Skriptbeendfehler auftritt, wird der Beendigungscode auf 1
festgelegt. Anders als bei -Command
, wenn die Ausführung mit STRG+C unterbrochen wird, lautet 0
der Ausgangscode . Weitere Informationen finden Sie in $LASTEXITCODE
about_Automatic_Variables.
Hinweis
Ab PowerShell 7.2 akzeptiert .ps1
der Dateiparameter nur Dateien unter Windows. Wenn ein anderer Dateityp angezeigt wird, wird ein Fehler ausgelöst. Dieses Verhalten ist windowsspezifisch. Auf anderen Plattformen versucht PowerShell, andere Dateitypen auszuführen.
-Command | -c
Der Wert von Command kann , ein Skriptblock oder eine Zeichenfolge sein -
. Wenn der Wert von Command lautet -
, wird der Befehlstext aus der Standardeingabe gelesen.
Der Command-Parameter akzeptiert nur 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-Host ausgeführt wird pwsh
. 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 pwsh
.
pwsh -Command {Get-WinEvent -LogName security}
In cmd.exe
, gibt es keine Solche wie einen Skriptblock (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 es sich genau so, als ob Sie ihn an einer typischen PowerShell-Eingabeaufforderung eingegeben haben, indem Sie den Inhalt des Skriptblocks wieder in Sie drucken.
Eine an Command übergebene Zeichenfolge wird weiterhin als PowerShell-Code ausgeführt, sodass die geschweiften Klammern des Skriptblocks häufig nicht an erster Stelle benötigt werden, wenn sie von cmd.exe
. Zum Ausführen eines inlineskriptblocks, der in einer Zeichenfolge definiert ist, kann der Aufrufoperator &
verwendet werden:
pwsh -Command "& {Get-WinEvent -LogName security}"
Wenn der Wert von Command eine Zeichenfolge ist, muss Command der letzte Parameter für pwsh sein, da alle folgenden Argumente als Teil des auszuführenden Befehls interpretiert werden.
Wenn die Ergebnisse innerhalb einer vorhandenen PowerShell-Sitzung aufgerufen werden, werden die Ergebnisse als deserialisierte XML-Objekte an die übergeordnete Shell und nicht als Liveobjekte zurückgegeben. Bei anderen Shells werden die Ergebnisse als Zeichenfolgen zurückgegeben.
Wenn der Wert von Command lautet -
, werden die Befehle aus der Standardeingabe gelesen. Sie müssen die Standardeingabe umleiten, wenn Sie den Command-Parameter mit Standardeingabe verwenden. Zum Beispiel:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | pwsh -NoProfile -Command -
Dieses Beispiel erzeugt die folgende Ausgabe:
in
hi there
out
Beim Lesen von Standardeingaben wird die Eingabe analysiert und jeweils eine Anweisung ausgeführt, als ob sie an der PowerShell-Eingabeaufforderung eingegeben wurden. Wenn der Eingabecode nicht richtig analysiert wird, wird die Anweisung nicht ausgeführt. Sofern Sie den -NoExit
Parameter nicht verwenden, wird die PowerShell-Sitzung beendet, wenn keine Eingabe mehr zum Lesen von Standardeingaben vorhanden ist.
Der Prozessendecode wird durch den Status des letzten (ausgeführten) Befehls innerhalb der Eingabe bestimmt. Der Beendigungscode ist 0
der Zeitpunkt $?
$true
oder 1
der Zeitpunkt.$false
$?
Wenn es sich bei dem letzten Befehl um ein externes Programm oder ein PowerShell-Skript handelt, das explizit einen anderen Exitcode als 0
oder 1
einen anderen Exitcode festlegt, wird dieser Beendigungscode für Prozessausgangscode konvertiert 1
. Ebenso wird der Wert 1 zurückgegeben, wenn ein Skript-Endingfehler (Runspace-Terminating) auftritt, z. B. ein throw
oder -ErrorAction Stop
, oder wenn die Ausführung mit STRG+C unterbrochen wird.
Um den spezifischen Beendigungscode beizubehalten, fügen Sie exit $LASTEXITCODE
der Befehlszeichenfolge oder dem Skriptblock hinzu. Weitere Informationen finden Sie in $LASTEXITCODE
about_Automatic_Variables.
-CommandWithArgs | -cwa
Dies ist ein experimentelles Feature, das in 7.4 hinzugefügt wird.
Führt einen PowerShell-Befehl mit Argumenten aus. Im Gegensatz dazu -Command
füllt dieser Parameter die $args
erstellte-in-Variable auf, die vom Befehl verwendet werden kann.
Die erste Zeichenfolge ist der Befehl. Zusätzliche Zeichenfolgen, die durch Leerzeichen getrennt sind, sind die Argumente.
Zum Beispiel:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
Dieses Beispiel erzeugt die folgende Ausgabe:
arg: arg1
arg: arg2
Hinweis
Das Analysieren von Argumenten mit Anführungszeichen führt dazu, dass das Beispiel fehlschlägt, wenn die Ausführung von cmd.exe
oder powershell.exe
. Um von diesen auszuführen, können Sie
REM Quoting required when run from cmd.exe
pwsh -CommandWithArgs "$args | % { ""arg: $_"" }" arg1 arg2
# Quoting required when run from powershell.exe
pwsh -CommandWithArgs '"$args | % { ""arg: $_"" }"' arg1 arg2
-ConfigurationName | -config
Gibt einen Konfigurationsendpunkt an, in dem PowerShell ausgeführt wird. Dies kann jeder auf dem lokalen Computer registrierte Endpunkt sein, einschließlich der standardmäßigen PowerShell-Remotingendpunkte oder eines benutzerdefinierten Endpunkts mit bestimmten Benutzerrollenfunktionen.
Beispiel: pwsh -ConfigurationName AdminRoles
-ConfigurationFile
Gibt einen Sitzungskonfigurationsdateipfad (.pssc
) an. Die in der Konfigurationsdatei enthaltene Konfiguration wird auf die PowerShell-Sitzung angewendet.
Beispiel: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"
-CustomPipeName
Gibt den Namen an, der für einen zusätzlichen IPC-Server (benanntes Pipe) für das Debuggen und andere prozessübergreifende Kommunikation verwendet werden soll. Dies bietet einen vorhersehbaren Mechanismus zum Herstellen einer Verbindung mit anderen PowerShell-Instanzen. Wird in der Regel mit dem Parameter CustomPipeName für Enter-PSHostProcess
.
Dieser Parameter wurde in PowerShell 6.2 eingeführt.
Zum Beispiel:
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand | -e | -ec
Akzeptiert eine base64-encodierte Zeichenfolgenversion eines Befehls. Verwenden Sie diesen Parameter, um Befehle an PowerShell zu übermitteln, die komplexe, geschachtelte Quoten erfordern. Die Base64-Darstellung muss eine UTF-16LE-codierte Zeichenfolge sein.
Zum Beispiel:
$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand
-ExecutionPolicy | -ex | -ep
Legt die Standardausführungsrichtlinie für die aktuelle Sitzung fest und speichert sie in der $env:PSExecutionPolicyPreference
Umgebungsvariable. Dieser Parameter ändert nicht die dauerhaft konfigurierten Ausführungsrichtlinien.
Dieser Parameter gilt nur für Windows-Computer. Auf Nicht-Windows-Plattformen werden der Parameter und der bereitgestellte Wert ignoriert.
-InputFormat | -inp | -if
Beschreibt das Format der Daten, die an PowerShell übermittelt werden. Gültige Werte sind "Text" (Textzeichenfolgen) oder "XML" (serialisiertes CLIXML-Format).
-Interactive | -i
Stellen Sie dem Benutzer eine interaktive Eingabeaufforderung vor. Umkehrung für NonInteractive-Parameter.
-Login | -l
Unter Linux und macOS startet PowerShell als Anmeldeshell, wobei /bin/sh zum Ausführen von Anmeldeprofilen wie /etc/profile und ~/.profile verwendet wird. Unter Windows führt dieser Schalter nichts aus.
Wichtig
Dieser Parameter muss zuerst gestartet werden, um PowerShell als Anmeldeshell zu starten. Dieser Parameter wird ignoriert, wenn er an eine andere Position übergeben wird.
So richten pwsh
Sie die Anmeldeshell auf UNIX-Betriebssystemen-lein:
Vergewissern Sie sich, dass der vollständige absolute Pfad
pwsh
unter/etc/shells
- Dieser Pfad ist in der Regel etwa
/usr/bin/pwsh
unter Linux oder/usr/local/bin/pwsh
unter macOS - Bei einigen Installationsmethoden wird dieser Eintrag automatisch zur Installationszeit hinzugefügt.
- Falls
pwsh
nicht vorhanden/etc/shells
, verwenden Sie einen Editor, um den Pfadpwsh
an die letzte Zeile anzufügen. Dies erfordert erhöhte Rechte zum Bearbeiten.
- Dieser Pfad ist in der Regel etwa
Verwenden Sie das Chsh-Hilfsprogramm, um die Shell des aktuellen Benutzers auf folgendes festzulegen
pwsh
:chsh -s /usr/bin/pwsh
Warnung
Die Einstellung pwsh
als Anmeldeshell wird derzeit für Windows-Subsystem für Linux (WSL) nicht unterstützt, und der Versuch, als Anmeldeshell festzulegenpwsh
, kann dazu führen, dass WSL interaktiv nicht gestartet werden kann.
-MTA
Starten Sie PowerShell mit einem Multithread-Apartment. Dieser Schalter ist nur unter Windows verfügbar. Die Verwendung dieses Parameters auf Nicht-Windows-Plattformen führt zu einem Fehler.
-NoExit | -noe
Nach dem Ausführen der Startbefehle erfolgt kein Beenden.
Beispiel: pwsh -NoExit -Command Get-Date
-NoLogo | -nol
Blendet das Banner beim Start interaktiver Sitzungen aus.
-NonInteractive | -noni
Dieser Schalter wird verwendet, um Sitzungen zu erstellen, die keine Benutzereingabe erfordern sollten. Dies ist nützlich für Skripts, die in geplanten Aufgaben oder CI/CD-Pipelines ausgeführt werden. Alle Versuche, interaktive Features zu verwenden, z Read-Host
. B. Bestätigungsaufforderungen, führen zu Beendigungsfehlern von Anweisungen und nicht zum Hängen.
-NoProfile | -nop
Lädt die PowerShell-Profile nicht.
-NoProfileLoadTime
Blendet den Beim Start angezeigten PowerShell-Profilladezeittext aus, wenn die Ladezeit 500 Millisekunden überschreitet.
-OutputFormat | -o | -of
Bestimmt, wie die Ausgabe von PowerShell formatiert ist. Gültige Werte sind "Text" (Textzeichenfolgen) oder "XML" (serialisiertes CLIXML-Format).
Beispiel: pwsh -o XML -c Get-Date
Wenn Sie in einer PowerShell-Sitzung aufgerufen werden, erhalten Sie deserialisierte Objekte als Ausgabe eher einfache Zeichenfolgen. Wenn sie von anderen Shells aufgerufen wird, handelt es sich bei der Ausgabe um Zeichenfolgendaten, die als CLIXML-Text formatiert sind.
-SettingsFile | -settings
Überschreibt die Einstellungsdatei für die Systemidee-wpowershell.config.json
für die Sitzung. Standardmäßig werden die Systemide-Einstellungen-waus dem powershell.config.json
$PSHOME
Verzeichnis gelesen.
Beachten Sie, dass diese Einstellungen nicht vom vom -ConfigurationName
Argument angegebenen Endpunkt verwendet werden.
Beispiel: pwsh -SettingsFile c:\myproject\powershell.config.json
-SSHServerMode | -sshs
Wird in sshd_config zum Ausführen von PowerShell als SSH-Subsystem verwendet. Sie ist nicht für andere Zwecke vorgesehen oder unterstützt.
-STA
Starten Sie PowerShell mit einem Singlethread-Apartment. Dies ist die Standardeinstellung. Dieser Switch ist nur auf der Windows-Plattform verfügbar. Die Verwendung dieses Parameters auf Nicht-Windows-Plattformen führt zu einem Fehler.
-Version | -v
Zeigt die Version dieser ausführbaren PowerShell-Datei an. Zusätzliche Parameter werden ignoriert.
-WindowStyle | -w
Legt den Fensterstil für die Sitzung fest. Gültige Werte sind „Normal“, „Minimized“, „Maximized“ und „Hidden“. Dieser Parameter gilt nur für Windows. Die Verwendung dieses Parameters auf Nicht-Windows-Plattformen führt zu einem Fehler.
-WorkingDirectory | -wd | -wo
Legt das anfängliche Arbeitsverzeichnis fest, indem er beim Start ausgeführt wird. Jeder gültige PowerShell-Dateipfad wird unterstützt.
Um PowerShell in Ihrem Startverzeichnis zu starten, verwenden Sie Folgendes: pwsh -WorkingDirectory ~
-Help, -?, /?
Zeigt Hilfe für pwsh
. Wenn Sie einen Pwsh-Befehl in PowerShell eingeben, stellen Sie die Befehlsparameter mit einem Bindestrich (), nicht einem Schrägstrich (-
/
) voran.