Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A PowerShell egy parancssori rendszerhéj és egy automatizáláshoz használt szkriptnyelv. A többi rendszerhéjhoz hasonlóan, például bash Linuxon vagy a Windows Command Shellben (cmd.exe) a PowerShell lehetővé teszi a rendszeren elérhető parancsok futtatását, nem csak a PowerShell-parancsokat.
Parancstípusok
Bármely operációs rendszerhéjhoz háromféle parancstípus létezik:
Shell nyelvi kulcsszók a rendszerhéj szkriptnyelvének részét képezik.
- Az
bashkulcsszavak például a következők:if,then,else,elifésfi. - Az
cmd.exekulcsszavak például a következők:dir,copy,move,ifésecho. - A PowerShell-kulcsszavak például a következők:
for,foreach,try,catchéstrap.
A rendszerhéj nyelvi kulcsszavai csak a rendszerhéj futtatókörnyezetében használhatók. A rendszerhéjon kívül nincs végrehajtható fájl, amely biztosítja a kulcsszó funkcióit.
- Az
operációsrendszer-natív parancsok az operációs rendszerben telepített végrehajtható fájlok. A végrehajtható elemek bármilyen parancssori rendszerhéjból futtathatók, például a PowerShellből. Ide tartoznak azok a szkriptfájlok, amelyek megfelelő működéséhez más shell-ek szükségesek. Ha például windowsos kötegszkriptet (
.cmdfájlt) futtat a PowerShellben, a PowerShellcmd.exefuttat, és végrehajtás céljából átadja a kötegfájlt.Rendszerhéj környezetspecifikus parancsai olyan külső fájlokban definiált parancsok, amelyek csak a rendszerhéj futtatókörnyezetében használhatók. Ide tartoznak azok a szkriptek, függvények és modulok, amelyek parancsokat adnak hozzá a rendszerhéj-futtatókörnyezethez. A PowerShellben ezeket a modul által hozzáadott parancsokat parancsmagoknak nevezzük (ejtsd : "command-lets").
Natív parancsok futtatása
Bármely natív parancs futtatható a PowerShell parancssorából. A parancsot általában pontosan úgy futtatod, ahogyan a bash vagy cmd.exeesetén tennéd. Az alábbi példa a grep parancs futtatását mutatja be bash Ubuntu Linuxon.
sdwheeler@circumflex:~$ grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
sdwheeler@circumflex:~$ pwsh
PowerShell 7.2.6
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
A PowerShell Ubuntu-on való elindítása után ugyanezt a parancsot futtathatja a PowerShell parancssorából:
PS /home/sdwheeler> grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
Argumentumok átadása natív parancsoknak
A legtöbb shell tartalmazza a változók használatára, a kifejezések kiértékelésére és a karakterláncok kezelésére szolgáló funkciókat. De mindegyik rendszerhéj másképp csinálja ezeket a dolgokat. A PowerShellben minden paraméter egy kötőjel (-) karakterrel kezdődik. A cmd.exelegtöbb parancsparaméter perjel (/) karaktert használ. Más parancssori eszközök szóközöket, kötőjeleket, kétkötőjelet (--) használhatnak.
Mindegyik rendszerhéj saját módon kezeli és értékeli a parancssori karakterláncokat. Ha natív parancsokat futtat a PowerShellben, amelyek azt várják, hogy a sztringek adott módon legyenek idézve, előfordulhat, hogy módosítania kell a sztringek átadásának módját.
További információkért lásd a következő cikkeket:
A PowerShell 7.2 bevezetett egy új kísérleti funkciót PSNativeCommandArgumentPassing, amely javította a natív parancskezelést. További információ: $PSNativeCommandArgumentPassing.
Kimenet és hibák kezelése
A PowerShell több kimeneti streammel is rendelkezik, mint más rendszerhéjak. A bash és cmd.exe shell-eknek stdout és stderrvan. A PowerShell hat kimeneti streammel rendelkezik. További információért lásd about_Redirection és about_Output_Streams.
Általánosságban elmondható, hogy az stdout natív parancs által küldött kimenet a PowerShell Success streambe kerül. Az stderr natív parancs által küldött kimenetet a rendszer a PowerShell hiba streambe küldi.
Ha egy natív parancs nullától eltérő kilépési kóddal rendelkezik, akkor a $? értéke a $false-re van állítva. Ha a kilépési kód nulla, $?$trueértékre van állítva.
A PowerShell 7.2 azonban megváltoztatta ezt a viselkedést. A natív parancsokból átirányított hibarekordok, például átirányítási operátorok (2>&1) használata esetén a rendszer nem írja a PowerShell $Error változójába, és a $ErrorActionPreference beállítási változó nem befolyásolja az átirányított kimenetet.
Számos natív parancs ír a stderr alternatív streamre további információként. Ez a viselkedés zavart okozhat a PowerShellben a hibák keresésekor, és a további kimeneti információk elveszhetnek, ha $ErrorActionPreference olyan állapotra van beállítva, amely elnémítja a kimenetet.
A PowerShell 7.3 új kísérleti funkciót PSNativeCommandErrorActionPreference adott hozzá, amely lehetővé teszi a natív parancsokból származó nem nulla kilépési kódok kezelésének szabályozását. További információ: $PSNativeCommandUseErrorActionPreference.
PowerShell-parancsok futtatása
Ahogy korábban említettük, a PowerShell-parancsokat parancsmagoknak nevezzük. A parancsmagok olyan PowerShell-modulokba vannak gyűjtve, amelyek igény szerint betölthetők. A parancsmagokat bármilyen lefordított .NET-nyelven vagy magának a PowerShell-szkriptnyelvnek a használatával írhatjuk.
Más parancsokat futtató PowerShell-parancsok
A PowerShell híváskezelő (&) lehetővé teszi a változókban tárolt és sztringek vagy szkriptblokkok által képviselt parancsok futtatását. Az operátorral bármilyen natív parancsot vagy PowerShell-parancsot futtathat. Ez akkor hasznos egy szkriptben, ha dinamikusan kell létrehoznia egy natív parancs parancssori paramétereit. További információ: híváskezelő.
A Start-Process parancsmag natív parancsok futtatására használható, de csak akkor használható, ha szabályoznia kell a parancs végrehajtásának módját. A parancsmag paraméterekkel támogatja a következő forgatókönyveket:
- Parancs futtatása különböző hitelesítő adatokkal
- Az új folyamat által létrehozott konzolablak elrejtése
- Irányítsd át a stdin, stdoutés stderr folyamokat.
- Másik munkakönyvtár használata a parancshoz
Az alábbi példa átirányított bemeneti és kimeneti adatfolyamokkal futtatja a natív parancsot sort.exe.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
További információért lásd: Start-Process.
Windows rendszeren a Invoke-Item parancsmag végrehajtja a megadott elem alapértelmezett műveletét. Futtat például egy végrehajtható fájlt, vagy megnyit egy dokumentumfájlt a dokumentumfájltípushoz társított alkalmazással. Az alapértelmezett művelet az elem típusától és az elemhez hozzáférést biztosító PowerShell-szolgáltatótól függ.
Az alábbi példa megnyitja a PowerShell-forráskódtárat az alapértelmezett webböngészőben.
Invoke-Item https://github.com/PowerShell/PowerShell
További információ: Invoke-Item.