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 , -Commandwenn ein Skript-Terminierungsfehler auftritt, wird der Exit-Code auf 1festgelegt. Anders als bei -Command, wenn die Ausführung jedoch mit STRG-C unterbrochen wird, lautet 0der 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/shellsist, verwenden Sie einen Editor, um den Pfad pwsh an die letzte Zeile anzufügen. Dies erfordert erhöhte Berechtigungen zum Bearbeiten.
  • 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.