about_Pwsh
Krátký popis
Vysvětluje, jak používat pwsh
rozhraní ine příkazu-l. Zobrazí parametry ine příkazu-la popisuje syntaxi.
Dlouhý popis
Informace o možnostech příkazu-lpro 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 nerozlišují malá-ia velká písmena.
-File | -f
Hodnota File může být -
nebo cesta k souboru a volitelné parametry. Pokud je -
hodnota File , 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.
Parametry přepínače skriptu jsou obvykle zahrnuty nebo vynechány.
Například následující příkaz používá parametr All souboru Get-Script.ps1
skriptu: -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 přepínače 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 in cmd.exe
a chcete předat hodnotu proměnné prostředí, použijte cmd.exe
syntaxi: pwsh -File .\test.ps1 -TestParam %windir%
Naproti tomu spuštění pwsh -File .\test.ps1 -TestParam $env:windir
ve výsledku ve cmd.exe
skriptu přijímá literálový řetězec $env:windir
, protože pro aktuální cmd.exe
prostředí nemá žádný zvláštní význam. Styl $env:windir
odkazu na proměnnou prostředí lze použít uvnitř parametru Command , protože je interpretován jako kód PowerShellu.
Podobně pokud chcete spustit stejný příkaz ze skriptu Batch, místo .\
%~dp0
nebo $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ů. Když zavoláte nativní spustitelný soubor (například powershell
nebo pwsh
), neví, co dělat s polem, takže se předá jako řetězec.
Pokud je -
hodnota File , příkazy se čtou ze standardního vstupu.
Spuštění pwsh -File -
bez přesměrovaného 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čí příkazem exit
, ukončovací kód procesu se nastaví na číselný argument použitý s příkazem exit
.
-Command
Podobně jako v případě, že dojde k chybě ukončování skriptu, je ukončovací kód nastaven na 1
. Nicméně, na rozdíl od -Command
, když je spuštění přerušeno ctrl +C ukončovací kód je .0
Další informace najdete v about_Automatic_Variables$LASTEXITCODE
.
Poznámka:
Od PowerShellu 7.2 přijímá .ps1
parametr File pouze soubory ve Windows. Pokud je zadán jiný typ souboru, dojde k chybě. Toto chování je specifické pro Windows. Na jiných platformách se PowerShell pokusí spustit jiné typy souborů.
-Command | -c
Hodnota Command může být -
, blok skriptu nebo řetězec. Pokud je -
hodnota Command , text příkazu se načte ze standardního vstupu.
Parametr Command přijímá pouze blok skriptu ke spuštění, pokud dokáže rozpoznat hodnotu předanou příkazu jako typ ScriptBlock . To je možné jenom v případě, že je 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 parsován hostitelem PowerShellu jako literálový blok skriptu 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 je blok skriptu (nebo typ ScriptBlock ), takže hodnota předaná do Command je vždy řetězec. Blok skriptu můžete napsat uvnitř řetězce, 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 skriptu, který vám zablokuje.
Řetězec předaný příkazu se stále spouští jako kód PowerShellu, takže při spuštění závorky cmd.exe
bloku skriptu se často nevyžadují na prvním místě. Pokud chcete spustit vložený blok skriptu definovaný uvnitř řetězce, můžete použít operátor &
volání:
pwsh -Command "& {Get-WinEvent -LogName security}"
Pokud je hodnota Command řetězec, musí být příkaz 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. Pří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 tento parametr nepoužíváte, relace PowerShellu -NoExit
se ukončí, pokud není k dispozici žádný 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
ukončovací kód procesu. Podobně se hodnota 1 vrátí, když dojde k chybě ukončování skriptu (runspace-ukončování), například throw
-ErrorAction Stop
nebo , nebo při přerušení spuště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 bloku skriptu. Další informace najdete v about_Automatic_Variables$LASTEXITCODE
.
-CommandWithArgs | -cwa
Toto je experimentální funkce přidaná ve verzi 7.4.
Spustí příkaz PowerShellu s argumenty. Na rozdíl od -Command
tohoto parametru naplní sestavenou-i$args
n proměnnou, 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.
Příklad:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
Tento příklad vytvoří následující výstup:
arg: arg1
arg: arg2
Poznámka:
Analýza argumentu 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.
Příklad:
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand | -e | -ec
Přijímá nkódovanou verzi řetězce Base64-epří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.
Pří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 $env:PSExecutionPolicyPreference
proměnné prostředí. Tento parametr nemění trvale nakonfigurované zásady spouštění.
Tento parametr platí jenom pro počítače s Windows. Na jiných platformách než 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. Ve Windows tento přepínač nedělá nic.
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.
pwsh
Nastavení jako přihlašovacího prostředí v operačních systémech UNIX-like:
Ověřte, že je v seznamu uvedená úplná absolutní cesta.
pwsh
/etc/shells
- Tato cesta je obvykle něco jako
/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í k dispozici/etc/shells
, pomocí editoru připojte cestu kpwsh
poslednímu řádku. K úpravám se vyžadují zvýšená oprávnění.
- Tato cesta je obvykle něco jako
Pomocí nástroje chsh nastavte prostředí aktuálního uživatele na
pwsh
:chsh -s /usr/bin/pwsh
Upozorňující
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
jako přihlašovací prostředí může vést k tomu, že nejde spustit WSL interaktivně.
-MTA
Spusťte PowerShell pomocí vícevláknového apartmánu. Tento přepínač je k dispozici pouze ve Windows. Použití tohoto parametru na platformách jiných než 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. Všechny pokusy o použití interaktivních funkcí, jako Read-Host
jsou výzvy k potvrzení nebo výzvy k potvrzení, způsobí, že se místo předsazení 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 soubor nastavení integrovaného vývojového prostředí systému-wpowershell.config.json
pro relaci. Ve výchozím nastavení se nastavení integrovaného vývojového powershell.config.json
$PSHOME
prostředí systému-wnačítá z adresáře.
Všimněte si, že tato nastavení koncový bod určený 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. Tato možnost je výchozí. Tento přepínač je dostupný jenom na platformě Windows. Použití tohoto parametru na platformách jiných než 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 jiných než 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 spojovníkem (-
), nikoli lomítkem (/
).