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.
-Command
A parancsfájl-megszakítási hiba esetén a kilépési kód a következőre 1
van állítva: . A Ctrl+C billentyűkombinációval megszakított végrehajtástól -Command
eltérően azonban a kilépési kód a 0
kö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.exe
az 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.exe
futnak. 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 1
nem, 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 -Command
ez 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ó sorhozpwsh
. Ehhez emelt szintű jogosultságokra van szükség a szerkesztéshez.
- Ez az elérési út általában hasonló
A chsh segédprogrammal állítsa az aktuális felhasználó rendszerhéját a következőre
pwsh
: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.