Megosztás a következőn keresztül:


about_Pwsh

Rövid leírás

A parancs-line felületének pwsh használatát ismerteti. Megjeleníti a parancs-line paramétereit, és leírja a szintaxist.

Hosszú leírás

A Windows PowerShell 5.1 parancsmag-beállításairól-ltovábbi információt a about_PowerShell_exe című témakörben talál.

Syntax

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

Paraméterek

Minden paraméter megkülönbözteti a kis- és-inagybetűket.

-File | -f

A Fájl értéke lehet - fájlút vagy választható paraméterek. Ha a Fájl értéke, -akkor a parancsok a standard bemenetből lesznek beolvasva.

Ez az alapértelmezett paraméter, ha nincsenek paraméterek, de az értékek a parancssorban találhatók. A megadott szkript az új munkamenet helyi hatókörében (dot-sourced) fut, hogy a szkript által létrehozott függvények és változók elérhetők legyenek az új munkamenetben. Adja meg a szkriptfájlt és a paramétereket. A parancsban a fájlnak kell lennie az utolsó paraméternek, mert a Fájl paraméter neve után beírt összes karaktert a szkriptfájlként értelmezi a rendszer, amelyet a szkriptparaméterek követnek.

A szkriptek kapcsolóparaméterei általában belefoglalásra vagy kihagyásra kerülnek. A következő parancs például a szkriptfájl All paraméterét Get-Script.ps1 használja: -File .\Get-Script.ps1 -All

Ritkán előfordulhat, hogy logikai értéket kell megadnia egy kapcsolóparaméterhez. Ha logikai értéket szeretne megadni egy kapcsolóparaméterhez a Fájl paraméter értékében, használja a paramétert, amelyet általában kettőspont és logikai érték követ, például: -File .\Get-Script.ps1 -All:$False.

A szkriptnek átadott paramétereket a rendszer konstans sztringekként adja át, miután az aktuális rendszerhéj értelmezte. Ha például egy cmd.exe környezeti változó értékét szeretné átadni, használja a szintaxist cmd.exe : pwsh -File .\test.ps1 -TestParam %windir%

Ezzel szemben az eredmények futtatásával pwsh -File .\test.ps1 -TestParam $env:windir cmd.exe a szkript a literális sztringet $env:windir kapja, mert nincs különleges jelentése az aktuális cmd.exe rendszerhéjnak. A $env:windir környezeti változó hivatkozási stílusa egy Parancsparaméteren belül használható, mivel powerShell-kódként van értelmezve.

Hasonlóképpen, ha ugyanazt a parancsot egy Batch-szkriptből szeretné végrehajtani, akkor az aktuális végrehajtási könyvtár helyett .\ vagy $PSScriptRoot az aktuális végrehajtási könyvtárat jelölné%~dp0: pwsh -File %~dp0test.ps1 -TestParam %windir%. Ha ehelyett használja .\test.ps1 , a PowerShell hibát jelez, mert nem találja a literális elérési utat .\test.ps1

Feljegyzés

A Fájl paraméter nem támogatja a szkripteket olyan paraméter használatával, amely argumentumértékek tömbjére számít. Ez sajnos azt korlátozza, hogy a natív parancsok hogyan kapják meg az argumentumértékeket. Ha natív végrehajtható (például powershell vagy pwsh) parancsot hív meg, az nem tudja, mit kell tennie egy tömbhöz, ezért sztringként lesz átadva.

Ha a Fájl értéke, -akkor a parancsok a standard bemenetből lesznek beolvasva. A normál bemenet átirányítás nélkül történő futtatása pwsh -File - rendszeres munkamenetet indít el. Ez megegyezik azzal, hogy egyáltalán nem adja meg a File paramétert. A standard bemenetről való olvasáskor a bemeneti utasítások egyszerre egy utasítást hajtanak végre, mintha a PowerShell parancssorában lettek volna begépelve. Ha egy utasítás nem értelmezi megfelelően az utasítást, a rendszer nem hajtja végre az utasítást. A folyamat kilépési kódját a bemeneten belüli utolsó (végrehajtott) parancs állapota határozza meg. Normál leállítás esetén a kilépési kód mindig 0. Amikor a szkriptfájl egy exit paranccsal leáll, a folyamat kilépési kódja a parancshoz exit használt numerikus argumentumra van állítva.

-CommandA parancsfájl-megszakítási hiba esetén a kilépési kód a következőre 1van állítva: . A Ctrl+C billentyűkombinációval megszakított végrehajtástól -Commandeltérően azonban a kilépési kód a 0következő. További információ: $LASTEXITCODE about_Automatic_Variables.

Feljegyzés

A PowerShell 7.2-ben a Fájl paraméter csak Windows rendszeren fogad fájlokat .ps1 . Ha egy másik fájltípust ad meg, hibaüzenet jelenik meg. Ez a viselkedés Windows-specifikus. Más platformokon a PowerShell más fájltípusokat próbál futtatni.

-Command | -c

A Parancs értéke lehet -szkriptblokk vagy sztring. Ha a Parancs értéke, -a parancs szövegét a szokásos bemenetből olvassa be a rendszer.

A Parancs paraméter csak akkor fogad el szkriptblokkot a végrehajtáshoz, ha képes felismerni a Parancsnak átadott értéket ScriptBlock-típusként. Ez csak akkor lehetséges, ha egy másik PowerShell-gazdagépről futpwsh. A ScriptBlock típusa szerepelhet egy meglévő változóban, amelyet egy kifejezésből ad vissza, vagy a PowerShell-gazdagép a kapcsos zárójelek közé (kapcsos zárójelek{} közé) foglalt literális szkriptblokkként elemezve, mielőtt az átkerül a következőre pwsh: .

pwsh -Command {Get-WinEvent -LogName security}

Ebben cmd.exeaz esetben nincs olyan, hogy szkriptblokk (vagy ScriptBlock-típus), ezért a Parancsnak átadott érték mindig egy sztring. Írhat szkriptblokkot a sztringen belül, de a végrehajtás helyett pontosan úgy viselkedik, mintha egy tipikus PowerShell-parancssorba írta volna, és a szkriptblokk tartalmát visszanyomtathatja Önnek.

A parancsnak átadott sztring továbbra is PowerShell-kódként fut, így a szkriptblokk kapcsos zárójelei gyakran nem szükségesek először, amikor a parancsból cmd.exefutnak. Egy sztringben definiált beágyazott szkriptblokk végrehajtásához a hívási operátor & használható:

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

Ha a Parancs értéke sztring, a parancsnak a pwsh utolsó paraméterének kell lennie, mivel az azt követő összes argumentumot a parancs végrehajtása során értelmezi a rendszer.

Ha egy meglévő PowerShell-munkamenetből hívjuk meg, az eredményeket a rendszer deszerializált XML-objektumként, nem élő objektumként adja vissza a szülőhéjnak. Más rendszerhéjak esetén a rendszer sztringekként adja vissza az eredményeket.

Ha a Parancs értéke, -a parancsok a standard bemenetből lesznek beolvasva. A parancsparaméter standard bemenettel való használatakor át kell irányítania a standard bemenetet. Példa:

@'
"in"

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

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

Ez a példa a következő kimenetet hozza létre:

in
hi there
out

A standard bemenetről való olvasáskor a bemenetet a rendszer egyszerre egy utasítással elemzi és hajtja végre, mintha a PowerShell parancssorában gépelték volna be őket. Ha a bemeneti kód nem elemez megfelelően, a rendszer nem hajtja végre az utasítást. Ha nem használja a paramétert -NoExit , a PowerShell-munkamenet akkor lép ki, ha nincs több bemenet a standard bemenetből való olvasáshoz.

A folyamat kilépési kódját a bemeneten belüli utolsó (végrehajtott) parancs állapota határozza meg. A kilépési kód az, 0 amikor $? van $true vagy 1 mikor $? van $false. Ha az utolsó parancs egy külső program vagy egy Olyan PowerShell-szkript, amely explicit módon állít be egy kilépési kódot, amely nem 0 vagy 1nem, akkor a kilépési kód a folyamat kilépési kódjára lesz konvertálva 1 . Hasonlóképpen, az 1 értéket akkor adja vissza a rendszer, ha egy szkript-megszakítási (runspace-terminating) hiba, például az throw a vagy -ErrorAction Stop, vagy ha a végrehajtás megszakad a Ctrl+C billentyűkombinációval.

Az adott kilépési kód megőrzéséhez adja hozzá exit $LASTEXITCODE a parancssztringet vagy a szkriptblokkot. További információ: $LASTEXITCODE about_Automatic_Variables.

-CommandWithArgs | -cwa

Ez a 7.4-ben hozzáadott kísérleti funkció.

Egy PowerShell-parancs végrehajtása argumentumokkal. A paramétertől eltérően -Commandez a paraméter feltölti a $args parancs által használható beépített-in változót.

Az első sztring a parancs. A szóközök által elválasztott további sztringek az argumentumok.

Példa:

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

Ez a példa a következő kimenetet hozza létre:

arg: arg1
arg: arg2

Feljegyzés

Az idézőjelekkel történő argumentum-elemzés miatt a példa sikertelen lesz, ha a futtatás vagy a cmd.exe powershell.exe. Ezekből való futtatáshoz használhatja a

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

Megadja azt a konfigurációs végpontot, amelyben a PowerShell fut. Ez lehet bármely, a helyi gépen regisztrált végpont, beleértve az alapértelmezett PowerShell-remoting végpontokat, vagy egy egyéni végpontot, amely adott felhasználói szerepkör-képességekkel rendelkezik.

Példa: pwsh -ConfigurationName AdminRoles

-ConfigurationFile

Megadja a munkamenet-konfiguráció (.pssc) fájl elérési útját. A konfigurációs fájlban található konfiguráció a PowerShell-munkamenetre lesz alkalmazva.

Példa: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"

-CustomPipeName

Megadja a hibakereséshez és más folyamatközi kommunikációhoz használt további IPC-kiszolgáló (elnevezett cső) nevét. Ez kiszámítható mechanizmust kínál más PowerShell-példányokhoz való csatlakozáshoz. Általában a CustomPipeName paraméterrel használják a következőn Enter-PSHostProcess: .

Ez a paraméter a PowerShell 6.2-ben lett bevezetve.

Példa:

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

-EncodedCommand | -e | -ec

Egy parancs Base64-kódolt-esztringverzióját fogadja el. Ezzel a paramétersel olyan parancsokat küldhet a PowerShellbe, amelyek összetett, beágyazott idézeteket igényelnek. A Base64-ábrázolásnak UTF-16LE kódolású sztringnek kell lennie.

Példa:

$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand

-ExecutionPolicy | -ex | -ep

Beállítja az aktuális munkamenet alapértelmezett végrehajtási szabályzatát, és menti azt a $env:PSExecutionPolicyPreference környezeti változóba. Ez a paraméter nem módosítja az állandó módon konfigurált végrehajtási szabályzatokat.

Ez a paraméter csak Windows rendszerű számítógépekre vonatkozik. A nem Windows-platformokon a paraméter és a megadott érték figyelmen kívül lesz hagyva.

-InputFormat | -inp | -if

A PowerShellbe küldött adatok formátumát ismerteti. Az érvényes értékek a "Text" (szöveges sztringek) vagy az "XML" (szerializált CLIXML formátum).

-Interactive | -i

Interaktív üzenet megjelenítése a felhasználónak. Inverz neminteraktív paraméter esetén.

-Login | -l

Linuxon és macOS rendszeren a PowerShellt bejelentkezési rendszerhéjként indítja el, a /bin/sh használatával pedig olyan bejelentkezési profilokat hajthat végre, mint a /etc/profile és a ~/.profile. Windows rendszeren ez a kapcsoló nem tesz semmit.

Fontos

Ennek a paraméternek először be kell indítania a PowerShellt bejelentkezési rendszerhéjként. Ezt a paramétert a rendszer figyelmen kívül hagyja, ha egy másik pozícióban adja át.

Bejelentkezési rendszerhéjként való beállítás pwsh UNIX-like operációs rendszereken:

  • Ellenőrizze, hogy a teljes abszolút elérési út pwsh szerepel-e a listában /etc/shells

    • Ez az elérési út általában hasonló /usr/bin/pwsh Linuxon vagy /usr/local/bin/pwsh macOS rendszeren
    • Néhány telepítési módszer esetén ezt a bejegyzést a rendszer automatikusan hozzáadja a telepítéskor
    • Ha pwsh nincs benne /etc/shells, a szerkesztő segítségével fűzze hozzá az elérési utat az utolsó sorhoz pwsh . Ehhez emelt szintű jogosultságokra van szükség a szerkesztéshez.
  • A chsh segédprogrammal állítsa az aktuális felhasználó rendszerhéját a következőrepwsh:

    chsh -s /usr/bin/pwsh
    

Figyelmeztetés

A bejelentkezési felületként való beállítás pwsh jelenleg nem támogatott a Linuxos Windows-alrendszer (WSL) rendszeren, és ha megkísérli beállítani pwsh a bejelentkezési rendszerhéjat, az azt eredményezheti, hogy nem lehet interaktívan elindítani a WSL-t.

-MTA

Indítsa el a PowerShellt egy többszálas lakással. Ez a kapcsoló csak Windows rendszeren érhető el. Ha ezt a paramétert nem Windows-platformokon használja, hibaüzenet jelenik meg.

-NoExit | -noe

Indítási parancsok futtatása után nem lép ki.

Példa: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Elrejti a szalagcímet az interaktív munkamenetek indításakor.

-NonInteractive | -noni

Ez a kapcsoló olyan munkamenetek létrehozására szolgál, amelyekhez nem szükséges felhasználói bevitel. Ez az ütemezett feladatokban vagy CI/CD-folyamatokban futó szkriptek esetében hasznos. Az interaktív funkciók ( például Read-Host a megerősítési kérések) használatára tett kísérletek az utasítások leállását eredményezik ahelyett, hogy leakadnának.

-NoProfile | -nop

Nem tölti be a PowerShell-profilokat.

-NoProfileLoadTime

Elrejti a PowerShell-profil indításkor megjelenő betöltési idejét, ha a betöltési idő meghaladja az 500 ezredmásodpercet.

-OutputFormat | -o | -of

Meghatározza, hogy a PowerShell kimenete hogyan legyen formázva. Az érvényes értékek a "Text" (szöveges sztringek) vagy az "XML" (szerializált CLIXML formátum).

Példa: pwsh -o XML -c Get-Date

Ha egy PowerShell-munkamenetben meghívják, a deszerializált objektumokat kimenetként, meglehetősen egyszerű sztringekként kapja meg. Ha más rendszerhéjakból hívjuk meg, a kimenet a CLIXML-szövegként formázott sztringadatok.

-SettingsFile | -settings

Felülbírálja a munkamenet rendszer-wide-beállítások powershell.config.json fájljának felülbírálását. A rendszer alapértelmezés szerint beolvassa a rendszer-wide-beállításait a powershell.config.json $PSHOME könyvtárból.

Vegye figyelembe, hogy ezeket a beállításokat az argumentum által -ConfigurationName megadott végpont nem használja.

Példa: pwsh -SettingsFile c:\myproject\powershell.config.json

-SSHServerMode | -sshs

A PowerShell SSH-alrendszerként való futtatásához használt sshd_config. Más használatra nem szánták és nem támogatják.

-STA

Indítsa el a PowerShellt egy egyszálas apartman használatával. Ez az alapértelmezett beállítás. Ez a kapcsoló csak a Windows platformon érhető el. Ha ezt a paramétert nem Windows-platformokon használja, hibaüzenet jelenik meg.

-Version | -v

Megjeleníti a végrehajtható PowerShell-verziót. A rendszer figyelmen kívül hagyja a további paramétereket.

-WindowStyle | -w

Beállítja a munkamenet ablakstílusát. Az érvényes értékek a Normál, a Kis méretű, a Teljes és a Rejtett értékek. Ez a paraméter csak a Windowsra vonatkozik. Ha ezt a paramétert nem Windows-platformokon használja, hibaüzenet jelenik meg.

-WorkingDirectory | -wd | -wo

A kezdeti munkakönyvtár beállítása indításkor történő végrehajtással. Minden érvényes PowerShell-fájl elérési útja támogatott.

A PowerShell kezdőkönyvtárban való elindításához használja a következőt: pwsh -WorkingDirectory ~

-Help, -?, /?

Súgó megjelenítése a következőhöz pwsh: . Ha pwsh-parancsot ír be a PowerShellben, a parancs paramétereit kötőjellel (-nem perjellel/) kell előre felfűzni.