about_Pwsh
Kurze Beschreibung
Erläutert die Verwendung der pwsh
Befehlsschnittstelle-l. Zeigt die Befehlsparameter-lan und beschreibt die Syntax.
Lange Beschreibung
Informationen zu den Befehlsoptionen-lfü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>] } ]
[-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ß-/-iKleinschreibung nicht beachtet.
-File | -f
Wenn der Wert von File
ist -
, wird der Befehlstext aus der Standardeingabe gelesen.
Die Ausführung pwsh -File -
ohne umgeleitete Standardeingabe startet eine reguläre Sitzung. Dies entspricht der Angabe des File
Parameters überhaupt nicht.
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 Funktionen und Variablen, die das Skript erstellt, in der neuen Sitzung verfügbar sind. Geben Sie den Skriptdateipfad und alle Parameter ein. File muss der letzte Parameter im Befehl sein, da alle Zeichen, die nach dem File-Parameternamen eingegeben werden, als Skriptdateipfad gefolgt von den Skriptparametern interpretiert werden.
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 switch-Parameter angeben. Um einen booleschen Wert für einen switch-Parameter im Wert des File-Parameters bereitzustellen, verwenden Sie den Parameter normalerweise, gefolgt von einem Doppelpunkt und dem booleschen Wert, z. B.: -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 sich beispielsweise in cmd.exe
befinden und 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
dazu, dass das Skript die Literalzeichenfolge $env:windir
empfängt, da es für die aktuelle cmd.exe
Shell keine besondere Bedeutung hat. Der $env:windir
Stil des Verweises auf Umgebungsvariablen kann innerhalb eines Command-Parameters verwendet werden, da er dort als PowerShell-Code interpretiert wird.
Wenn Sie denselben Befehl aus einem Batch-Skript ausführen möchten, verwenden %~dp0
Sie anstelle von .\
oder $PSScriptRoot
, um das aktuelle Ausführungsverzeichnis darzustellen: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Wenn Sie stattdessen verwendet .\test.ps1
haben, löst PowerShell einen Fehler aus, da der Literalpfad nicht gefunden werden kann. .\test.ps1
Hinweis
Der File-Parameter kann keine Skripts unterstützen, die einen Parameter verwenden, der ein Array von Argumentwerten erwartet. Dies ist leider eine Einschränkung, wie ein nativer Befehl Argumentwerte abruft. Wenn Sie eine native ausführbare Datei (z powershell
. B. oder pwsh
) aufrufen, weiß sie nicht, was mit einem Array zu tun ist, und wird daher als Zeichenfolge übergeben.
Wenn die Skriptdatei mit einem exit
Befehl beendet wird, wird der Prozessausgangscode auf das numerische Argument festgelegt, das mit dem exit
Befehl verwendet wird. Bei normaler Beendigung lautet der Exitcode immer 0
.
Weitere Informationen finden Sie $LASTEXITCODE
unter about_Automatic_Variables.
-Command
Ähnlich wie wird bei einem Skriptabschlussfehler der Exitcode auf 1
festgelegt. Anders als bei -Command
ist der Exitcode jedoch , wenn die Ausführung mit STRG+C unterbrochen wird 0
.
Hinweis
Ab PowerShell 7.2 akzeptiert .ps1
der File-Parameter nur Dateien unter Windows. Wenn ein anderer Dateityp angegeben wird, wird ein Fehler ausgelöst. Dieses Verhalten ist Windows-spezifisch. Auf anderen Plattformen versucht PowerShell, andere Dateitypen auszuführen.
-Command | -c
Führt die angegebenen Befehle (und alle Parameter) so aus, als ob sie an der PowerShell-Eingabeaufforderung eingegeben wurden, und beendet dann, es sei denn, der NoExit
Parameter 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 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 aus ausgeführt pwsh
wird. Der ScriptBlock-Typ kann in einer vorhandenen Variablen enthalten sein, von einem Ausdruck zurückgegeben oder vom PowerShell-Host als Literalskriptblock analysiert werden, der in geschweifte Klammern ({}
) eingeschlossen wird, bevor an pwsh
übergeben wird.
pwsh -Command {Get-WinEvent -LogName security}
In cmd.exe
gibt es keinen Skriptblock (oder ScriptBlock-Typ ), sodass der an Command übergebene Wert immer eine Zeichenfolge ist. Sie können einen Skriptblock in die Zeichenfolge schreiben, aber anstatt ausgeführt zu werden, verhält er sich genau so, als ob Sie ihn an einer typischen PowerShell-Eingabeaufforderung eingegeben haben und den Inhalt des Skriptblocks wieder auf Sie drucken.
Eine an Command übergebene Zeichenfolge wird weiterhin als PowerShell-Code ausgeführt, sodass die geschweiften Klammern des Skriptblocks bei der Ausführung von cmd.exe
häufig nicht erforderlich sind. Um einen in einer Zeichenfolge definierten Inlineskriptblock auszuführen, 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 darauf folgenden Argumente als Teil des auszuführenden Befehls interpretiert werden.
Beim Aufruf innerhalb einer vorhandenen PowerShell-Sitzung werden die Ergebnisse als deserialisierte XML-Objekte und nicht als Liveobjekte an die übergeordnete Shell zurückgegeben. Bei anderen 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 der Standardeingabe verwenden. Beispiel:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
Dieses Beispiel erzeugt die folgende Ausgabe:
in
hi there
out
Der Prozessausgangscode wird durch status des letzten (ausgeführten) Befehls innerhalb des Skriptblocks bestimmt. Der Exitcode lautet0
, wenn $true
$?
oder 1
ist $?
$false
. Wenn der letzte Befehl ein externes Programm oder ein PowerShell-Skript ist, das explizit einen anderen Exitcode als 0
oder 1
festlegt, wird dieser Exitcode für den Prozessausgangscode in 1
konvertiert. Um den spezifischen Exitcode beizubehalten, fügen Sie der Befehlszeichenfolge oder dem Skriptblock hinzu exit $LASTEXITCODE
.
Weitere Informationen finden Sie $LASTEXITCODE
unter about_Automatic_Variables.
Ebenso wird der Wert 1 zurückgegeben, wenn ein Skriptabschlussfehler (runspace-terminating) auftritt, z. B. oder throw
-ErrorAction Stop
, wenn die Ausführung mit STRG+C unterbrochen wird.
-ConfigurationName | -config
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 PowerShell-Standardremotingendpunkte oder ein benutzerdefinierter Endpunkt 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 (Named Pipe) verwendet werden soll, der für das Debuggen und andere prozessübergreifende Kommunikation verwendet wird. Dies bietet einen vorhersagbaren Mechanismus zum Herstellen einer Verbindung mit anderen PowerShell-Instanzen. Wird in der Regel mit dem Parameter CustomPipeName auf Enter-PSHostProcess
verwendet.
Dieser Parameter wurde in PowerShell 6.2 eingeführt.
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 Anführungszeichen erfordern. Die Base64-Darstellung muss eine UTF-16LE-codierte Zeichenfolge sein.
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
Umgebungsvariablen. Dieser Parameter ändert die persistent konfigurierten Ausführungsrichtlinien nicht.
Dieser Parameter gilt nur für Windows-Computer. Auf Nicht-Windows-Plattformen werden der Parameter und der angegebene 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
Präsentieren Sie dem Benutzer eine interaktive Eingabeaufforderung. Umgekehrt für den NonInteractive-Parameter.
-Login | -l
Unter Linux und macOS startet PowerShell als Anmeldeshell, wobei /bin/sh verwendet wird, um Anmeldeprofile wie "/etc/profile" und "~/.profile" auszuführen. Unter Windows bewirkt dieser Schalter nichts.
Wichtig
Dieser Parameter muss zuerst verwendet werden, um PowerShell als Anmeldeshell zu starten. Dieser Parameter wird ignoriert, wenn er an einer anderen Position übergeben wird.
So richten Sie pwsh
unter UNIX-ike-Betriebssystemen-lals Anmeldeshell ein:
Vergewissern Sie sich, dass der vollständige absolute Pfad zu
pwsh
unter/etc/shells
- Dieser Pfad ist in der Regel etwa unter
/usr/bin/pwsh
Linux oder/usr/local/bin/pwsh
macOS. - Bei einigen Installationsmethoden wird dieser Eintrag automatisch zum Zeitpunkt der Installation hinzugefügt.
- Wenn
pwsh
in/etc/shells
nicht vorhanden ist, verwenden Sie einen Editor, umpwsh
den Pfad in der letzten Zeile anzufügen. Dies erfordert erhöhte Berechtigungen zum Bearbeiten.
- Dieser Pfad ist in der Regel etwa unter
Verwenden Sie das Hilfsprogramm chsh , um die Shell Ihres aktuellen Benutzers auf festzulegen
pwsh
:chsh -s /usr/bin/pwsh
Warnung
Das Festlegen pwsh
der Anmeldeshell wird derzeit auf Windows-Subsystem für Linux (WSL) nicht unterstützt, und der Versuch, dort als Anmeldeshell festzulegenpwsh
, kann dazu führen, dass WSL nicht interaktiv gestartet werden kann.
-MTA
Starten Sie PowerShell mit einem Multithread-Apartment. Dieser Switch 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, wie z. B Read-Host
. Bestätigungsaufforderungen, führen dazu, dass Die Anweisung Fehler beendet, anstatt zu 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 innerhalb einer PowerShell-Sitzung aufgerufen werden, erhalten Sie deserialisierte Objekte als Ausgabe, eher einfache Zeichenfolgen. Wenn die Ausgabe von anderen Shells aufgerufen wird, handelt es sich um Zeichenfolgendaten, die als CLIXML-Text formatiert sind.
-SettingsFile | -settings
Überschreibt die Systemide-Einstellungsdatei-wpowershell.config.json
für die Sitzung. Standardmäßig werden systemide-Einstellungen-waus dem powershell.config.json
im $PSHOME
Verzeichnis gelesen.
Beachten Sie, dass diese Einstellungen nicht von dem 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. Es ist nicht für eine andere Verwendung vorgesehen oder unterstützt.
-STA
Starten Sie PowerShell mit einem Singlethread-Apartment. Dies ist die Standardoption. 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 von PowerShell 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 beim Start ausgeführt wird. Jeder gültige PowerShell-Dateipfad wird unterstützt.
Verwenden Sie Zum Starten von PowerShell in Ihrem Basisverzeichnis Folgendes: pwsh -WorkingDirectory ~
-Help, -?, /?
Zeigt Hilfe zu pwsh
an. Wenn Sie einen pwsh-Befehl in PowerShell eingeben, stellen Sie den Befehlsparametern einen Bindestrich (-
) und keinen Schrägstrich (/
) voran.