Sdílet prostřednictvím


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 .

-CommandPodobně 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.exeneexistuje žá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.exebloku 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 Stopnebo , 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 -Commandtohoto 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 k pwsh poslednímu řádku. K úpravám se vyžadují zvýšená oprávnění.
  • Pomocí nástroje chsh nastavte prostředí aktuálního uživatele napwsh:

    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 (/).