about_Pwsh
Stručný popis
Vysvětluje, jak používat pwsh
příkaz-line rozhraní. Zobrazí parametry ine příkazu-la popíše syntaxi.
Dlouhý popis
Syntaxe
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 | -? | /?
Parametry
U všech parametrů se nerozlišují malá-ia velká písmena.
-File | -f
Pokud je -
hodnota File
, text příkazu se přečte ze standardního vstupu.
Spuštění pwsh -File -
bez přesměrovaného standardního vstupu spustí běžnou relaci. Je to stejné, jako když parametr vůbec nezadáte File
.
Toto je výchozí parametr, pokud nejsou k dispozici žádné parametry, ale na příkazovém řádku se nacházejí hodnoty. Zadaný skript běží v místním oboru ("dot-sourced"), takže funkce a proměnné, které skript vytvoří, jsou k dispozici v aktuální relaci. Zadejte cestu k souboru skriptu a všechny parametry. Soubor musí být posledním parametrem v příkazu, protože všechny znaky zadané za názvem parametru souboru 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 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 přepínače. Pokud chcete zadat logickou hodnotu parametru přepínače v hodnotě parametru File , použijte parametr, za nímž obvykle bezprostředně následuje dvojtečka a logická hodnota, například: -File .\Get-Script.ps1 -All:$False
.
Parametry předané skriptu se předávají jako řetězce literálů 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žijete syntaxi cmd.exe
: pwsh -File .\test.ps1 -TestParam %windir%
Naproti tomu spuštění pwsh -File .\test.ps1 -TestParam $env:windir
v cmd.exe
má za následek, že skript obdrží řetězec $env:windir
literálu, protože pro aktuální cmd.exe
prostředí nemá žádný zvláštní význam. Styl $env:windir
odkazu na proměnné prostředí je možné použít uvnitř parametru Command , protože se tam interpretuje jako kód PowerShellu.
Podobně pokud chcete spustit stejný příkaz ze skriptu služby Batch, použili %~dp0
byste místo .\
nebo $PSScriptRoot
k reprezentaci aktuálního adresáře spuštění: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Pokud místo toho použijete .\test.ps1
příkaz , PowerShell vyvolá chybu, protože nemůže najít cestu k literálu. .\test.ps1
Poznámka
Parametr File nepodporuje skripty používající parametr, který očekává pole hodnot argumentů. To 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á jako řetězec.
Když se soubor skriptu ukončí příkazem exit
, nastaví se ukončovací kód procesu na číselný argument použitý s příkazem exit
. Při normálním ukončení je ukončovací kód vždy 0
.
Další informace najdete v tématu $LASTEXITCODE
about_Automatic_Variables.
Podobně jako v -Command
případě chyby ukončující skript je ukončovací kód nastavený na 1
. Na rozdíl od -Command
příkazu je však při přerušení provádění klávesou Ctrl+C ukončovací kód 0
.
Poznámka
Od PowerShellu 7.2 přijímá .ps1
parametr File jenom 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 pokouší spustit jiné typy souborů.
-Command | -c
Spustí zadané příkazy (a všechny parametry), jako by byly zadány na příkazovém řádku PowerShellu, a poté se ukončí, pokud NoExit
není zadaný parametr .
Hodnota command může být -
, blok skriptu nebo řetězec. Pokud je -
hodnota Command , text příkazu se přečte ze standardního vstupu.
Parametr Command přijímá blok skriptu ke spuštění pouze tehdy, když dokáže rozpoznat hodnotu předanou příkazu jako typ ScriptBlock . To je možné jenom 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ý skriptový blok 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
systému neexistuje nic jako blok skriptu (nebo typ ScriptBlock ), takže hodnota předaná příkazu je vždy řetězec. Do řetězce můžete napsat blok skriptu, ale místo spuštění se chová přesně tak, jako kdybyste ho zadali na typickém příkazovém řádku PowerShellu. Obsah bloku skriptu se vytiskne zpátky k vám.
Řetězec předaný příkazu se stále provádí jako kód PowerShellu, takže blokové složené závorky skriptu se při spuštění z cmd.exe
často nevyžadují. Ke spuštění bloku vloženého skriptu definovaného uvnitř řetězce lze 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 za ním jsou interpretovány jako součást příkazu, který se má provést.
Při zavolání z existující relace PowerShellu se výsledky vrátí do nadřazeného prostředí jako deserializované objekty XML, ne živé objekty. U ostatních prostředí se výsledky vrátí jako řetězce.
Pokud je -
hodnota Command , text příkazu se přečte ze standardního vstupu. Při použití parametru Command se standardním vstupem musíte přesměrovat standardní vstup. Například:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
Tento příklad vytvoří následující výstup:
in
hi there
out
Ukončovací kód procesu je určen stavem posledního (spuštěného) příkazu v rámci bloku skriptu. 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
, převede se tento ukončovací kód na 1
pro ukončovací kód procesu. Pokud chcete zachovat konkrétní ukončovací kód, přidejte exit $LASTEXITCODE
do příkazového řetězce nebo bloku skriptu.
Další informace najdete v tématu $LASTEXITCODE
about_Automatic_Variables.
Podobně se hodnota 1 vrátí, když dojde k chybě ukončující skript (ukončování runspace), jako throw
je například nebo -ErrorAction Stop
, nebo když je spuštění přerušeno klávesou Ctrl+C.
-ConfigurationName | -config
Určuje koncový bod konfigurace, ve kterém se spouští PowerShell. Může to být 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í koncový bod 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 na 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), který se používá pro ladění a další komunikaci mezi procesy. To 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 zaveden v PowerShellu 6.2.
Například:
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand | -e | -ec
Akceptuje base64-encoded řetězcovou verzi příkazu. Tento parametr použijte k odeslání příkazů do PowerShellu, které vyžadují složité vnořené uvozování. Reprezentace Base64 musí být řetězec kódovaný 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ásady spouštění pro aktuální relaci a uloží je do $env:PSExecutionPolicyPreference
proměnné prostředí. Tento parametr nemění trvale nakonfigurované zásady spouštění.
Tento parametr platí pouze pro počítače se systémem Windows. Proměnná $env:PSExecutionPolicyPreference
prostředí na jiných platformách než Windows neexistuje.
-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
Zobrazí uživateli interaktivní výzvu. Inverzní k parametru NonInteractive.
-Login | -l
V Linuxu a macOS spustí PowerShell jako přihlašovací prostředí a pomocí příkazu /bin/sh spustí přihlašovací profily, jako je /etc/profile a ~/.profile. Ve Windows tento přepínač nic nedělá.
Důležité
Tento parametr musí přijít jako první, aby se PowerShell spustil jako přihlašovací prostředí. Předání tohoto parametru na jinou pozici bude ignorováno.
pwsh
Nastavení přihlašovacího prostředí v operačních systémech UNIX-l:
Ověřte, že úplná absolutní cesta k
pwsh
je uvedená v části/etc/shells
- Tato cesta je obvykle podobná jako
/usr/bin/pwsh
v Linuxu nebo/usr/local/bin/pwsh
v macOS. - U některých metod instalace se tato položka přidá automaticky při instalaci.
- Pokud
pwsh
v/etc/shells
souboru není k dispozici , pomocí editoru připojte cestu kpwsh
na poslední řádek. To vyžaduje zvýšená oprávnění k úpravám.
- Tato cesta je obvykle podobná jako
Pomocí nástroje chsh nastavte prostředí aktuálního uživatele na
pwsh
:chsh -s /usr/bin/pwsh
Upozornění
Nastavení pwsh
přihlašovacího prostředí není v současné době podporováno v Subsystém Windows pro Linux (WSL) a pokus o nastavení pwsh
jako přihlašovacího prostředí může vést k tomu, že nebude možné spustit WSL interaktivně.
-MTA
Spusťte PowerShell pomocí vícevláknového apartmánu. Tento přepínač je dostupný jenom ve Windows.
-NoExit | -noe
Po spuštění příkazů po spuštění se neukončí.
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 vstup uživatele. 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 jsou Read-Host
nebo výzvy k potvrzení, mají za následek chyby ukončení příkazu, a ne k předsazení.
-NoProfile | -nop
Nenačte profily PowerShellu.
-NoProfileLoadTime
Skryje text doby načtení profilu PowerShellu, který se zobrazí při spuštění, když doba načítání překročí 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 rámci relace PowerShellu získáte deserializované objekty jako výstup spíše prosté řetězce. Při zavolání z jiných prostředí jsou výstupem řetězcová data formátovaná jako text CLIXML.
-SettingsFile | -settings
Přepíše soubor nastavení systémového-wintegrovaného vývojového powershell.config.json
prostředí pro relaci. Ve výchozím nastavení se nastavení integrovaného vývojového prostředí systému-wnačítají z powershell.config.json
$PSHOME
adresáře.
Všimněte si, že tato nastavení nepoužívá koncový bod určený argumentem -ConfigurationName
.
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 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 k dispozici pouze na platformě Windows.
-Version | -v
Zobrazí verzi PowerShellu. Další parametry jsou ignorovány.
-WindowStyle | -w
Nastaví styl okna pro relaci. Platné hodnoty jsou Normální, Minimalizované, Maximalizované a Skryté.
-WorkingDirectory | -wd
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 k pwsh
. Pokud v PowerShellu zadáváte příkaz pwsh, předepište parametry příkazu spojovníkem (-
), nikoli lomítkem (/
).