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.ps1pří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 $LASTEXITCODEabout_Automatic_Variables.

Podobně jako v -Commandpřípadě chyby ukončující skript je ukončovací kód nastavený na 1. Na rozdíl od -Commandpří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.exesysté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 $LASTEXITCODEabout_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/shellssouboru není k dispozici , pomocí editoru připojte cestu k pwsh na poslední řádek. To vyžaduje zvýšená oprávnění k úpravám.
  • 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 (/).