about_Pwsh
Kurze Beschreibung
Erläutert, wie Sie die Ine-Schnittstelle des pwsh
Befehls-lverwenden. Zeigt den Befehl-line-Parameter an und beschreibt die Syntax.
Lange Beschreibung
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
Alle Parameter sind Groß-/Kleinschreibung-i.
-File | -f
Wenn der Wert File
lautet -
, wird der Befehlstext aus der Standardeingabe gelesen.
Die Ausführung pwsh -File -
ohne umgeleitete Standardeingabe startet eine normale Sitzung. Dies ist identisch mit 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") ausgeführt, sodass die Funktionen und Variablen, die das Skript erstellt, in der aktuellen Sitzung verfügbar sind. Geben Sie den Pfad der Skriptdatei und Parameter an. Die Datei muss der letzte Parameter im Befehl sein, da alle Zeichen, die nach dem Dateinamen des Dateiparameters eingegeben wurden, 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 Parameter "Alle" der Skriptdatei Get-Script.ps1: -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 Dateiparameters bereitzustellen, verwenden Sie den Parameter normalerweise unmittelbar gefolgt von einem Doppelpunkt und dem booleschen Wert, z. B. folgende: -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 beispielsweise einen cmd.exe
Umgebungsvariablenwert übergeben möchten, verwenden Sie die cmd.exe
Syntax: pwsh -File .\test.ps1 -TestParam %windir%
Im Gegensatz dazu führt das Ausführen pwsh -File .\test.ps1 -TestParam $env:windir
von cmd.exe
Ergebnissen im Skript, das die Literalzeichenfolge $env:windir
empfängt, da es keine besondere Bedeutung für die aktuelle cmd.exe
Shell hat. Der $env:windir
Stil der Umgebungsvariablenreferenz kann innerhalb eines Befehlsparameters verwendet werden, da es als PowerShell-Code interpretiert wird.
Wenn Sie denselben Befehl aus einem Batchskript ausführen möchten, würden Sie anstelle oder .\
$PSScriptRoot
zum Darstellen des aktuellen Ausführungsverzeichnisses verwenden%~dp0
: pwsh -File %~dp0test.ps1 -TestParam %windir%
Wenn Sie stattdessen verwendet haben .\test.ps1
, löst PowerShell einen Fehler aus, da er den Literalpfad nicht finden kann. .\test.ps1
Hinweis
Der Parameter "File " kann Skripts nicht mithilfe eines Parameters unterstützen, der ein Array von Argumentwerten erwartet. Dies ist leider eine Einschränkung, wie ein systemeigener Befehl Argumentwerte abruft. Wenn Sie eine native ausführbare Datei (z powershell
. B. oder pwsh
) aufrufen, wissen Sie nicht, was sie mit einem Array tun sollen, sodass sie als Zeichenfolge übergeben wird.
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 ist der Exitcode immer 0
.
Ähnlich wie , -Command
wenn ein Skript-Terminierungsfehler auftritt, wird der Exit-Code auf 1
festgelegt. Anders als bei -Command
, wenn die Ausführung jedoch mit STRG-C unterbrochen wird, lautet 0
der Ausgangscode .
Hinweis
Ab PowerShell 7.2 akzeptiert .ps1
der Dateiparameter nur Dateien unter Windows. Wenn ein anderer Dateityp bereitgestellt 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) aus, als ob sie an der PowerShell-Eingabeaufforderung eingegeben wurden, und wird dann beendet, es sei denn, der NoExit
Parameter ist angegeben.
Der Wert von Command kann , ein Skriptblock oder eine Zeichenfolge sein -
. Wenn der Wert des Befehls 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 pwsh
wird. Der ScriptBlock-Typ kann in einer vorhandenen Variable enthalten sein, von einem Ausdruck zurückgegeben oder vom PowerShell-Host als Literalskriptblock analysiert werden, der in geschweifte Geschweifte () eingeschlossen ist,{}
bevor er an .pwsh
pwsh -Command {Get-WinEvent -LogName security}
In cmd.exe
, es gibt keine solche Wie ein Skriptblock (oder ScriptBlock-Typ ), daher ist der an Command übergebene Wert immer eine Zeichenfolge. Sie können einen Skriptblock in 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 an Sie drucken.
Eine an Command übergebene Zeichenfolge wird weiterhin als PowerShell-Code ausgeführt, sodass die geschweifte Klammern des Skriptblocks häufig nicht am ersten Ort erforderlich sind, wenn sie von cmd.exe
. Um einen inlineskriptblock auszuführen, 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 Argumente, die darauf folgen, als Teil des auszuführenden Befehls interpretiert werden.
Wenn sie innerhalb einer vorhandenen PowerShell-Sitzung aufgerufen werden, 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 des Befehls lautet -
, wird der Befehlstext aus der Standardeingabe gelesen. Sie müssen standardeingaben bei Verwendung des Befehlsparameters mit Standardeingabe umleiten. Zum Beispiel:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
Dieses Beispiel erzeugt die folgende Ausgabe:
in
hi there
out
Der Prozessausgangscode wird durch den Status des letzten (ausgeführten) Befehls innerhalb des Skriptblocks bestimmt. Der Exitcode 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
, dieser Exitcode für den Prozessausgangscode explizit festlegt, wird dieser code konvertiert 1
. Um den spezifischen Exitcode beizubehalten, fügen Sie Der Befehlszeichenfolge oder den Skriptblock hinzu exit $LASTEXITCODE
.
Ebenso wird der Wert 1 zurückgegeben, wenn ein Skript-Terminierungsfehler (Runspace-Terminating) auftritt, z. B. ein oder -ErrorAction Stop
, throw
oder 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 standardmäßigen PowerShell-Remotingendpunkte oder eines benutzerdefinierten Endpunkts mit bestimmten Benutzerrollenfunktionen.
Ein Beispiel: pwsh -ConfigurationName AdminRoles
-ConfigurationFile
Gibt einen Dateipfad für die Sitzungskonfiguration (.pssc
) an. Die in der Konfigurationsdatei enthaltene Konfiguration wird auf die PowerShell-Sitzung angewendet.
Ein Beispiel: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"
-CustomPipeName
Gibt den Namen an, der für einen zusätzlichen IPC-Server (benanntes Pipe) verwendet wird, der für das Debuggen und andere prozessübergreifende Kommunikation verwendet wird. 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-ncoded-Zeichenfolgenversion-eeines Befehls. Verwenden Sie diesen Parameter, um Befehle an PowerShell zu übermitteln, die komplexe, geschachtelte Zitate 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 persistent konfigurierten Ausführungsrichtlinien.
Dieser Parameter gilt nur für Windows-Computer. Die $env:PSExecutionPolicyPreference
Umgebungsvariable ist auf Nicht-Windows-Plattformen nicht vorhanden.
-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 nonInteractive-Parameter.
-Login | -l
Startet PowerShell unter Linux und macOS als Anmeldeshell mit /bin/sh, um Anmeldeprofile wie /etc/profile und ~/.profile auszuführen. Unter Windows macht dieser Schalter nichts.
Wichtig
Dieser Parameter muss zuerst PowerShell als Anmeldeshell starten. Das Übergeben dieses Parameters an einer anderen Position wird ignoriert.
So richten pwsh
Sie die Anmeldeshell auf UNIX-like-Betriebssystemen ein:
Überprüfen Sie, ob der vollständige absolute Pfad
pwsh
aufgeführt ist unter/etc/shells
- Dieser Pfad ist in der Regel etwas wie
/usr/bin/pwsh
unter Linux oder/usr/local/bin/pwsh
auf macOS - Bei einigen Installationsmethoden wird dieser Eintrag automatisch zur Installationszeit hinzugefügt.
- Wenn
pwsh
sie nicht vorhanden/etc/shells
ist, verwenden Sie einen Editor, um den Pfadpwsh
an die letzte Zeile anzufügen. Dies erfordert erhöhte Berechtigungen zum Bearbeiten.
- Dieser Pfad ist in der Regel etwas wie
Verwenden Sie das Chsh-Hilfsprogramm , um die Shell des aktuellen Benutzers auf
pwsh
:chsh -s /usr/bin/pwsh
Warnung
Die Einstellung pwsh
als Anmeldeshell wird derzeit auf 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 mithilfe einer multithreadierten Wohnung. Dieser Schalter ist nur unter Windows verfügbar.
-NoExit | -noe
Nach dem Ausführen der Startbefehle erfolgt kein Beenden.
Ein 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 wie oder Bestätigungsaufforderungen zu verwenden, führen dazu, Read-Host
dass die Anweisung beendet wird, anstatt zu hängen.
-NoProfile | -nop
Lädt die PowerShell-Profile nicht.
-NoProfileLoadTime
Blendet den PowerShell-Profilladezeittext aus, der beim Start angezeigt wird, 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).
Ein Beispiel: pwsh -o XML -c Get-Date
Wenn Sie mit einer PowerShell-Sitzung aufgerufen werden, erhalten Sie deserialisierte Objekte als Ausgabe eher nur Zeichenfolgen. Wenn Sie von anderen Shells aufgerufen werden, ist die Ausgabe 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
$PSHOME
Verzeichnis gelesen.
Beachten Sie, dass diese Einstellungen nicht vom -ConfigurationName
Vom Argument angegebenen Endpunkt verwendet werden.
Ein 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 andere Verwendungen vorgesehen oder unterstützt.
-STA
Starten Sie PowerShell mit einer einzelthreadierten Wohnung. Dies ist die Standardoption. Dieser Switch ist nur auf der Windows-Plattform verfügbar.
-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“.
-WorkingDirectory | -wd
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 (-
/
) vor.