about_PowerShell_exe
Rövid leírás
A parancssori powershell.exe
felület használatát ismerteti. Megjeleníti a parancssori paramétereket, és leírja a szintaxist.
Hosszú leírás
A PowerShell 7 parancssori beállításairól további információt a about_Pwsh talál.
SZINTAXIS
PowerShell[.exe]
[-PSConsoleFile <file> | -Version <version>]
[-NoLogo]
[-NoExit]
[-Sta]
[-Mta]
[-NoProfile]
[-NonInteractive]
[-InputFormat {Text | XML}]
[-OutputFormat {Text | XML}]
[-WindowStyle <style>]
[-EncodedArguments <Base64EncodedArguments>]
[-EncodedCommand <Base64EncodedCommand>]
[-ConfigurationName <string>]
[-File - | <filePath> <args>]
[-ExecutionPolicy <ExecutionPolicy>]
[-Command - | { <script-block> [-args <arg-array>] }
| { <string> [<CommandParameters>] } ]
PowerShell[.exe] -Help | -? | /?
Paraméterek
Minden paraméter megkülönbözteti a kis- és nagybetűket.
-Fájl – | <filePath><args>
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.
Ha a Fájl értéke filepath, a 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 parancs utolsó paraméterének fájlnak kell lennie. A Fájl paraméter után beírt összes érték a szkriptfájl-elérési útként lesz értelmezve, és az adott szkriptnek átadott paraméterek. Például: -File .\Get-Script.ps1 -Domain Central
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 paraméterhez.
Szkriptek futtatásakor nem lehet explicit logikai értéket adni egy kapcsolóparaméternek. Ez a korlátozás el lett távolítva a PowerShell 6-ban (pwsh.exe
).
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
: powershell.exe -File .\test.ps1 -TestParam %windir%
Ezzel szemben az eredmények futtatásával powershell.exe -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 powershell -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 az utolsó (végrehajtott) parancs állapota határozza meg. Sikeres végrehajtá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.
-Parancs
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 futpowershell.exe
. 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 powershell.exe
: .
powershell -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ó:
powershell.exe -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"
'@ | powershell -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.
-ConfigurationName sztring <>
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.
-EncodedArguments <Base64EncodedArguments>
A Base64 kódolású sztringverzió parancsargumentumait fogadja el. Ez a paraméter összetett, beágyazott idézőjegyzést igénylő argumentumok elküldéséhez használható. A Base64-ábrázolásnak UTF-16LE kódolású sztringnek kell lennie.
-EncodedCommand <Base64EncodedCommand>
Egy parancs 64-es alapkódolt sztringverzióját fogadja el. Ezzel a paramétersel olyan parancsokat küldhet a PowerShellbe, amelyek összetett idézőjeleket vagy kapcsos zárójeleket igényelnek. A sztringet UTF-16LE karakterkódolással kell formázni.
-ExecutionPolicy <ExecutionPolicy>
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 a beállításjegyzékben beállított PowerShell végrehajtási szabályzatot. A PowerShell végrehajtási szabályzataival kapcsolatos információkért, beleértve az érvényes értékek listáját, tekintse meg about_Execution_Policies.
-InputFormat {Text | XML}
A PowerShellbe küldött adatok formátumát ismerteti. Az érvényes értékek Text
(szöveges sztringek) vagy XML
(szerializált CLIXML-formátum).
-Mta
Elindítja a PowerShellt egy többszálas lakás használatával. Ezt a paramétert a PowerShell 3.0-ban vezettük be. A PowerShell 2.0-ban a többszálas lakás (MTA) az alapértelmezett. A PowerShell 3.0-ban az egyszálas lakás (STA) az alapértelmezett.
-NoExit
Indítási parancsok futtatása után nem lép ki.
-Neminteraktív
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.
-NoLogo
Elrejti a szerzői jogi szalagcímet az indításkor.
-NoProfile
Nem tölti be a PowerShell-profilt.
-OutputFormat {Text | XML}
Meghatározza, hogy a PowerShell kimenete hogyan legyen formázva. Az érvényes értékek Text
(szöveges sztringek) vagy XML
(szerializált CLIXML-formátum).
-PSConsoleFile <FilePath>
Betölti a megadott PowerShell-konzolfájlt. Adja meg a konzolfájl elérési útját és nevét. Konzolfájl létrehozásához használja az Export-Console parancsmagot a PowerShellben.
-Sta
Elindítja a PowerShellt egy egyszálas apartman használatával. A Windows PowerShell 2.0-ban a többszálas lakás (MTA) az alapértelmezett. A Windows PowerShell 3.0-ban az egyszálas lakás (STA) az alapértelmezett.
-PowerShell-verzió <>
Elindítja a PowerShell megadott verzióját. Az érvényes értékek a 2.0 és a 3.0. A megadott verziót telepíteni kell a rendszerre. Ha a Windows PowerShell 3.0 telepítve van a számítógépre, a "3.0" az alapértelmezett verzió. Ellenkező esetben a "2.0" az alapértelmezett verzió. A további tudnivalókat lásd a PowerShell telepítése során.
-WindowStyle <Ablakstílus>
Beállítja a munkamenet ablakstílusát. Az érvényes értékek a következőkNormal
: , Minimized
Maximized
és Hidden
.
-Segítség-?/?
Súgó megjelenítése a következőhöz PowerShell.exe
: . Ha egy PowerShell-munkamenetben beír egy PowerShell.exe
parancsot, a parancs paramétereit kötőjellel (-
nem perjellel/
) kell előre felfűzni. Használhat kötőjelet vagy perjelet is.cmd.exe
MEGJEGYZÉSEK
Hibaelhárítási megjegyzés: A PowerShell 2.0-ban a PowerShell-konzol egyes programjainak indítása meghiúsul a 0xc0000142 LastExitCode-kódjával.
PÉLDÁK
# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1
# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"
# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}
# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"
# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand