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


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.

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

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

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

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

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