about_Pwsh

Krátký popis

Vysvětluje, jak používat příkaz pwsh-lrozhraní ine. Zobrazí příkaz-lparametry ine a popisuje syntaxi.

Dlouhý popis

Informace o příkazu-line pro Windows PowerShell 5.1 najdete v tématu about_PowerShell_exe.

Syntaxe

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 | -? | /?

Parametry

Všechny parametry-inerozlišují velká a malá písmena.

-File | -f

Hodnota Soubor může být - nebo cesta k souboru a volitelné parametry. Pokud je hodnota Soubor-, příkazy se čtou ze standardního vstupu.

Toto je výchozí parametr, pokud nejsou k dispozici žádné parametry, ale hodnoty jsou přítomné na příkazovém řádku. Zadaný skript se spustí v místním oboru ("dot-sourced") nové relace, aby funkce a proměnné, které skript vytvoří, byly k dispozici v nové relaci. Zadejte cestu k souboru skriptu a všechny parametry. Soubor musí být posledním parametrem příkazu, protože všechny znaky zadané za názvem parametru File jsou interpretovány jako cesta k souboru skriptu následované parametry skriptu.

[switch] Parametry skriptu jsou obvykle zahrnuty nebo vynechány. Například následující příkaz používá parametr All souboru skriptu Get-Script.ps1: -File .\Get-Script.ps1 -All

Ve výjimečných případech může být nutné zadat logickou hodnotu parametru [switch] . Chcete-li poskytnout logickou hodnotu parametru [switch] v hodnotě parametru File , použijte parametr normálně následovaný dvojtečka a logickou hodnotou, například následující: -File .\Get-Script.ps1 -All:$false.

Parametry předané skriptu se předávají jako literální řetězce po interpretaci aktuálním prostředím. Pokud jste například v cmd.exe a chcete předat hodnotu proměnné prostředí, použijte syntaxi cmd.exe: pwsh -File .\test.ps1 -TestParam %windir%

Naproti tomu spuštění pwsh -File .\test.ps1 -TestParam $Env:windir v cmd.exe vede ke skriptu, který přijímá literálový řetězec $Env:windir, protože nemá žádný zvláštní význam pro aktuální prostředí cmd.exe. $Env:windir styl odkazu na proměnnou prostředí lze použít uvnitř parametru Command, protože se interpretuje jako kód PowerShellu.

Podobně pokud chcete spustit stejný příkaz ze skriptu Batch, byste místo %~dp0 nebo .\ použili $PSScriptRoot k reprezentaci aktuálního spouštěcího adresáře: pwsh -File %~dp0test.ps1 -TestParam %windir%. Pokud místo toho použijete .\test.ps1, PowerShell vyvolá chybu, protože nemůže najít cestu literálu .\test.ps1

Poznámka

Parametr File nemůže podporovat skripty pomocí parametru, který očekává pole hodnot argumentů. Toto je bohužel omezení způsobu, jakým nativní příkaz získá hodnoty argumentů. Při volání nativního spustitelného souboru (například powershell nebo pwsh) neví, co dělat s polem, takže se předává jako řetězec.

Pokud je hodnota Soubor-, příkazy se čtou ze standardního vstupu. Spuštění pwsh -File - bez přesměrování standardního vstupu spustí běžnou relaci. To je stejné jako nezadání parametru File vůbec. Při čtení ze standardního vstupu se vstupní příkazy spouští po jednom příkazu, jako by byly zadány na příkazovém řádku PowerShellu. Pokud se příkaz správně parsuje, příkaz se nespustí. Ukončovací kód procesu je určen stavem posledního (spuštěného) příkazu ve vstupu. Při normálním ukončení je ukončovací kód vždy 0. Když se soubor skriptu ukončí pomocí příkazu exit, nastaví se ukončovací kód procesu na číselný argument použitý s příkazem exit.

Podobně jako -Command, pokud dojde k chybě ukončování skriptu, ukončovací kód je nastaven na 1. Na rozdíl od -Commandje však při spuštění přerušeno Ctrl+C ukončovací kód je 0. Další informace najdete v tématu $LASTEXITCODE v about_Automatic_Variables.

Poznámka

Od PowerShellu 7.2 přijímá parametr File pouze soubory .ps1 na Windows. Pokud je zadán jiný typ souboru, dojde k chybě. Toto chování je Windows specifické. Na jiných platformách se PowerShell pokusí spustit jiné typy souborů.

-Command | -c

Hodnota Command může být -, scriptblock nebo řetězec. Pokud je hodnota Command-, text příkazu se načte ze standardního vstupu.

Parametr Command přijímá pro spuštění pouze skriptblock, pokud dokáže rozpoznat hodnotu předanou příkazu jako typ ScriptBlock . To je možné pouze při spuštění pwsh z jiného hostitele PowerShellu. Typ ScriptBlock může být obsažen v existující proměnné, vrácený z výrazu nebo analyzován hostitelem PowerShellu jako literálový skriptblock uzavřený ve složených závorkách ({}), před předáním do pwsh.

pwsh -Command {Get-WinEvent -LogName Security}

V cmd.exe, neexistuje žádná taková věc jako scriptblock (nebo ScriptBlock typ), takže hodnota předaná Do Command je vždy řetězec. Do řetězce můžete napsat blok skriptu, ale místo jeho spuštění se chová přesně tak, jako kdybyste ho zadali v typickém příkazovém řádku PowerShellu, vytiskněte obsah bloku skriptu zpět za vás.

Řetězec předaný příkazu se stále spouští jako kód PowerShellu, takže složené závorky skriptu se při spuštění závorek cmd.exečasto nevyžadují na prvním místě . Pokud chcete spustit vložený skriptblock definovaný uvnitř řetězce, můžete použít operátor& volání:

pwsh -Command "& {Get-WinEvent -LogName Security}"

Pokud je hodnota Command řetězec, Command musí být posledním parametrem pro pwsh, protože všechny argumenty, které následují, jsou interpretovány jako součást příkazu ke spuštění.

Při zavolání z existující relace PowerShellu se výsledky vrátí do nadřazeného prostředí jako deserializované objekty XML, nikoli živé objekty. U jiných prostředí se výsledky vrátí jako řetězce.

Pokud je hodnota Command-, příkazy se čtou ze standardního vstupu. Standardní vstup je nutné přesměrovat při použití parametru Command se standardním vstupem. Například:

@'
"in"

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

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

Tento příklad vytvoří následující výstup:

in
hi there
out

Při čtení ze standardního vstupu se vstup analyzuje a spouští jeden příkaz najednou, jako by byly zadány na příkazovém řádku PowerShellu. Pokud se vstupní kód správně parsuje, příkaz se nespustí. Pokud nepoužíváte parametr -NoExit, relace PowerShellu se ukončí, pokud neexistuje další vstup pro čtení ze standardního vstupu.

Ukončovací kód procesu je určen stavem posledního (spuštěného) příkazu ve vstupu. Ukončovací kód je 0, když je $?$true nebo 1, když je $?$false. Pokud je posledním příkazem externí program nebo skript PowerShellu, který explicitně nastaví ukončovací kód jiný než 0 nebo 1, tento ukončovací kód se převede na 1 pro ukončovací kód procesu. Podobně se hodnota 1 vrátí, když dojde k chybě ukončení skriptu (runspace-ukončování), jako je například throw nebo -ErrorAction Stop, dojde nebo při přerušení provádění pomocí Ctrl+C.

Pokud chcete zachovat konkrétní ukončovací kód, přidejte exit $LASTEXITCODE ho do příkazového řetězce nebo skriptu. Další informace najdete v tématu $LASTEXITCODE v about_Automatic_Variables.

-CommandWithArgs | -cwa

Toto je experimentální funkce přidaná ve verzi 7.4 a stala se hlavní verzí PowerShellu 7.5-preview.5.

Spustí příkaz PowerShellu s argumenty. Na rozdíl od -Commandtento parametr naplní $args sestavenou proměnnou-in, kterou může příkaz použít.

Prvním řetězcem je příkaz. Argumenty jsou další řetězce oddělené prázdnými znaky.

Například:

pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2

Tento příklad vytvoří následující výstup:

arg: arg1
arg: arg2

Poznámka

analýza argumentů s uvozovkami způsobí selhání příkladu při spuštění z cmd.exe nebo powershell.exe. Pokud chcete tyto možnosti spustit, můžete použít

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

Určuje koncový bod konfigurace, ve kterém je spuštěný PowerShell. Může se jednat o libovolný koncový bod zaregistrovaný na místním počítači, včetně výchozích koncových bodů vzdálené komunikace PowerShellu nebo vlastního koncového bodu s konkrétními funkcemi role uživatele.

Příklad: pwsh -ConfigurationName AdminRoles

-ConfigurationFile

Určuje cestu k souboru konfigurace relace (.pssc). Konfigurace obsažená v konfiguračním souboru se použije v relaci PowerShellu.

Příklad: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"

-CustomPipeName

Určuje název, který se má použít pro další server IPC (pojmenovaný kanál) používaný pro ladění a další komunikaci mezi procesy. Nabízí předvídatelný mechanismus pro připojení k jiným instancím PowerShellu. Obvykle se používá s parametrem CustomPipeName na Enter-PSHostProcess.

Tento parametr byl představen v PowerShellu 6.2.

Například:

# PowerShell instance 1
pwsh -CustomPipeName MyDebugPipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName MyDebugPipe

-EncodedCommand | -e | -ec

Přijímá base64-ekódovanou řetězcovou verzi příkazu. Pomocí tohoto parametru odešlete příkazy do PowerShellu, které vyžadují složité vnořené uvozování. Reprezentace Base64 musí být řetězec s kódováním UTF-16LE.

Například:

$command = 'dir "C:\Program Files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -EncodedCommand $encodedCommand

-ExecutionPolicy | -ex | -ep

Nastaví výchozí zásadu spouštění pro aktuální relaci a uloží ji do proměnné prostředí $Env:PSExecutionPolicyPreference. Tento parametr nemění trvale nakonfigurované zásady spouštění.

Tento parametr platí jenom pro Windows počítače. Na platformách, které nejsou Windows, se parametr a zadaná hodnota ignorují.

-InputFormat | -inp | -if

Popisuje formát dat odesílaných do PowerShellu. Platné hodnoty jsou Text (textové řetězce) nebo XML (serializovaný formát CLIXML).

-Interactive | -i

Prezentujte uživateli interaktivní výzvu. Inverzní funkce pro parametr NonInteractive.

-Login | -l

V Linuxu a macOS spustí PowerShell jako přihlašovací prostředí pomocí příkazu /bin/sh ke spouštění přihlašovacích profilů, jako jsou /etc/profile a ~/.profile. Na Windows tento přepínač nic nedělá.

Důležitý

Tento parametr musí nejprve spustit PowerShell jako přihlašovací prostředí. Tento parametr je ignorován, pokud je předán v jiné pozici.

Nastavení pwsh jako přihlašovacího prostředí v operačních systémech Unix-like:

  • Ověřte, že je v části pwsh uvedena úplná absolutní cesta k /etc/shells.

    • Tato cesta se obvykle podobá /usr/bin/pwsh v Linuxu nebo /usr/local/bin/pwsh v macOS.
    • S některými metodami instalace se tato položka přidá automaticky v době instalace.
    • Pokud pwsh není v /etc/shells, pomocí editoru připojte cestu k pwsh na posledním řádku. K úpravám se vyžadují zvýšená oprávnění.
  • Pomocí nástroje chsh nastavte prostředí aktuálního uživatele na pwsh:

    chsh -s /usr/bin/pwsh
    

Varování

Nastavení pwsh, protože přihlašovací prostředí se v současné době nepodporuje v Subsystém Windows pro Linux (WSL) a pokus o nastavení pwsh může vést k tomu, že přihlašovací prostředí nemůže interaktivně spustit WSL.

-MTA

Spusťte PowerShell pomocí vícevláknového apartmánu. Tento přepínač je k dispozici pouze na Windows. Použití tohoto parametru na platformách, které nejsou Windows, způsobí chybu.

-NoExit | -noe

Po spuštění spouštěcíchpříkazůch

Příklad: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Skryje banner při spuštění interaktivních relací.

-NonInteractive | -noni

Tento přepínač slouží k vytváření relací, které by neměly vyžadovat uživatelský vstup. To je užitečné pro skripty, které běží v naplánovaných úlohách nebo kanálech CI/CD. Při každém pokusu o použití interaktivních funkcí, jako jsou Read-Host nebo výzvy k potvrzení, se místo zablokování zobrazí ukončení příkazů.

-NoProfile | -nop

Nenačítá profily PowerShellu.

-NoProfileLoadTime

Skryje text doby načtení profilu PowerShellu zobrazený při spuštění, když doba načítání přesahuje 500 milisekund.

-OutputFormat | -o | -of

Určuje formátování výstupu z PowerShellu. Platné hodnoty jsou Text (textové řetězce) nebo XML (serializovaný formát CLIXML).

Příklad: pwsh -o XML -c Get-Date

Při zavolání v relaci PowerShellu získáte deserializované objekty jako výstup spíše prosté řetězce. Při zavolání z jiných prostředí je výstup řetězcová data formátovaná jako text CLIXML.

-SettingsFile | -settings

Přepíše systém-wide powershell.config.json souboru nastavení relace. Ve výchozím nastavení se nastavení integrovaného vývojového prostředí-wsystému čte z powershell.config.json v adresáři $PSHOME.

Všimněte si, že tato nastavení koncový bod zadaný argumentem -ConfigurationName nepoužívá.

Příklad: pwsh -SettingsFile C:\myproject\powershell.config.json

-SSHServerMode | -sshs

Používá se v sshd_config pro spuštění PowerShellu jako subsystému SSH. Není určená ani podporovaná pro žádné jiné použití.

-STA

Spusťte PowerShell pomocí apartmánu s jedním vláknem. Toto je výchozí hodnota. Tento přepínač je k dispozici pouze na platformě Windows. Použití tohoto parametru na platformách, které nejsou Windows, způsobí chybu.

-Version | -v

Zobrazí verzi tohoto spustitelného souboru PowerShellu. Další parametry se ignorují.

-WindowStyle | -w

Nastaví styl okna relace. Platné hodnoty jsou Normální, Minimalizované, Maximalizované a Skryté. Tento parametr platí jenom pro Windows. Použití tohoto parametru na platformách, které nejsou Windows, způsobí chybu.

-WorkingDirectory | -wd | -wO

Nastaví počáteční pracovní adresář spuštěním při spuštění. Podporuje se jakákoli platná cesta k souboru PowerShellu.

Pokud chcete spustit PowerShell v domovském adresáři, použijte: pwsh -WorkingDirectory ~

-Help, -?, /?

Zobrazí nápovědu pro pwsh. Pokud v PowerShellu píšete příkaz pwsh, předpište parametry příkazu pomlčkou (-), nikoli lomítkem (/).