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

-Parancs

A megadott parancsokat (és paramétereket) úgy hajtja végre, mintha a PowerShell parancssorában lettek volna begépelve, majd kilép, kivéve, ha a NoExit paraméter meg van adva.

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.exeaz esetben nincs olyan, hogy szkriptblokk (vagy ScriptBlock-típus), így a Parancsnak átadott érték mindig sztring lesz. Szkriptblokkot írhat a sztringen belül, de a végrehajtás helyett pontosan úgy fog viselkedni, 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ó:

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 parancs szövegét a szokásos bemenetből olvassa be a rendszer. 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 folyamat kilépési kódját a szkriptblokk utolsó (végrehajtott) parancsának á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 . Az adott kilépési kód megőrzéséhez adja hozzá exit $LASTEXITCODE a parancssztringet vagy a szkriptblokkot.

További információ: $LASTEXITCODEabout_Automatic_Variables.

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.

-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.

-Fájl – | <filePath><Arg>

Ha a Fájl értéke, -a parancs szövege a standard bemenetből lesz 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 Fájl paramétert.

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.

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

Ezzel szemben a cmd.exe futtatása powershell.exe -File .\test.ps1 -TestParam $env:windir a konstans sztringet $env:windir fogadó szkriptet eredményezi, 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 ott PowerShell-kódként fogjuk értelmezni.

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: powershell.exe -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

Ha a Fájl értéke fájlút, akkor a fájlnak kell lennie a parancs utolsó paraméterének, mert a Fájl paraméter neve után beírt karaktereket a szkriptfájl-elérési útként, majd a szkriptparaméterekként értelmezi a rendszer.

A szkript paramétereit és értékeit a Fájl paraméter értékében is megadhatja. 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).

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.

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. Normál leállítás esetén a kilépési kód mindig 0.

További információ: $LASTEXITCODEabout_Automatic_Variables.

-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.

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: , MinimizedMaximizedé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