A Microsoft PowerShell egy nagyszerű szkriptkészítő platform. A Microsoft szinte minden Windows Server szerepkörhöz és funkcióhoz PowerShell-támogatást biztosít. A PowerShell segítségével automatizálhatja az ismétlődő feladatokat, valamint a parancssor segítségével könnyen elvégezheti azokat a feladatokat, amelyeket általában a GUI-eszközökkel végez. Ha például egy termelési környezetben a Windows-kiszolgálók foltozási állapotát kell ellenőriznie, a PowerShell parancsfájl-megközelítés használata sokkal egyszerűbb, mint minden egyes kiszolgálóhoz külön-külön csatlakozni, majd ellenőrizni a foltozási állapotot. Rendszeres felhasználója vagyok a PowerShellnek, és 18 éves informatikai tapasztalatom során több ezer PowerShell-szkriptet terveztem.
A PowerShell előtt a Windows operációs feladatainak elvégzéséhez használt elsődleges szkriptnyelv a Visual Basic Scripting volt. Bár a Visual Basic Scripting még mindig létezik, és sok IT-adminisztrátor még mindig a VB scriptinget részesíti előnyben, érdemes megemlíteni, hogy a PowerShell csökkenti a kód bonyolultságát. Például egy Windows-számítógép szolgáltatásainak ellenőrzéséhez a VBScript kódot egy jegyzettömbben kell megírni, a fájlt .VBS néven elmenteni, majd a CSCript gazdafuttató fájl segítségével végrehajtani. A PowerShell használatával azonban egy egyszerű Get-Service cmdletet is használhat, amellyel gyorsan listázhatja a Windows-számítógép szolgáltatásait. Ha a kimenetet egy fájlba kellett menteni a VB script segítségével, akkor ismét egy csomó kódot kell írni a VB scriptben, ami a fil megnyitásával, majd a tartalom fájlba írásával jár. A PowerShell egyszerűen nem követeli meg a fájl megnyitását, mielőtt a PowerShell cmdlet által lekérdezett tartalom kiírható lenne egy fájlba. Mindössze az “Export-CSV” vagy az “Add-Content” cmdleteket kell használnia.
Cmdletek: A PowerShell parancsfájlok építőkövei
A PowerShell kínál cmdleteket (ejtsd: “command-let”), amelyeket néha parancssori eszközöknek is neveznek, és amelyek segítségével információkat szerezhet az operációs rendszerről, a Windows számítógépre telepített alkalmazásokról, hálózati információkról, a Windows számítógép javítási állapotáról és sok másról. Fontos megjegyezni, hogy a PowerShell cmdleteket .NET nyelven írják, és .NET osztályokat használnak a szükséges feladatok elvégzéséhez. Ha szeretné megtudni, hogy mely PowerShell-cmdletek állnak rendelkezésre a helyi számítógépen, hajtsa végre ezt a parancsot:
Get-Command
A Get-Command egy PowerShell-cmdlet, amely lekérdezi a helyi számítógépen telepített cmdleteket, függvényeket, szűrőket és PowerShell-skripteket. A fenti parancs lekérdezi a helyi számítógépre telepített összes PowerShell-modult. Ha a helyi számítógépre telepített összes parancsot sorrendben szeretné látni, hajtsa végre ezt a parancsot:
Get-Command -Type cmdlet | Sort-Object -Property Noun |FT -GroupBy Noun
A PowerShell műveletek három típusa
A PowerShell használatával háromféle műveletet végezhet. Ezek a Get, a Set és az Remove. Minden olyan PowerShell cmdlet, amely “Get”-tel kezdődik, jellemzően a Windows-összetevőkből való információ lekérdezésre szolgál. A Get-ADUser például olvasási műveletet hajt végre az Active Directory adatbázisán a felhasználói adatok lekérdezése érdekében. Az alábbiakban néhány példa látható a Get-ADUser PowerShell cmdlet használatára:
Get-ADUser -Filter * -SearchBase “OU=TestUsers,DC=TechGenix,DC=Com”
A fenti parancs egy szervezeti egységben található összes felhasználói fiókot lekérdezi, míg az alábbi parancs egyetlen Active Directory felhasználóhoz tartozó tulajdonságokat kérdez le:
Get-ADUser -Identity JohnThomas -Properties *
A “Set” kezdetű PowerShell cmdleteket a Windows-összetevők adatainak szerkesztésére használjuk. Például a Set-ADUser használatával különböző operatív feladatokat végezhetünk, ahogyan az alábbi parancsok mutatják:
Set-ADUser -Identity JohnThomas -HomeFolder \\Server1\%UserName%
Az alábbi parancsok a JohnThomas felhasználó levelezési tulajdonságát állítják be.
$ThisUser = Get-ADUser -Identity JohnThomas -Properties Mail
$ThisUser.Mail = [email protected]
Set-ADUser -Instance $ThisUser
A “Remove” kezdetű PowerShell cmdleteket a törlési műveletek végrehajtására használjuk. A Remove-ADUser például az alábbi módon használható egy Active Directory-felhasználó eltávolítására:
Remove-ADUser -Identity JohnThomas
PowerShell-cmdletek kombinálása
A PowerShell egyik legjobb funkciója, hogy két vagy több PowerShell-cmdletet egyetlen PowerShell-parancsban kombinálhatunk. Az ilyen parancsokat néha egysoros PowerShell parancsoknak is nevezik. Ha például az összes letiltott felhasználói fiókot el kell távolítania az Active Directoryból, akkor a Search-ADAccount és a Remove-ADUser PowerShell parancsokat az alábbi parancs szerint kombinálhatja:
Search-ADAccount -AccountDisabled | Where {$_.ObjectClass -eq “User”} | Remove-ADUser
Mint a fenti parancsban látható, a Search-ADAccount PowerShell cmdlet keresést végez az Active Directoryban a letiltott fiókok keresésére, majd a cső (|) operátor használatával utasítja a Remove-ADUser-t, hogy csak a Search-ADAccount által visszakeresett felhasználókon végezzen törlési műveletet.
PowerShell aliasok
Noha sok PowerShell-cmdlet könnyen olvasható és használható, a PowerShell egy PowerShell alias nevű funkciót is biztosít. A PowerShell elég okos ahhoz, hogy a Tab billentyű lenyomásával kiegészítse a PowerShell cmdlet nevét. Ha nehezen emlékszik a PowerShell-cmdletek nevére, létrehozhatja a PowerShell aliasokat. A Get-MailBoxStatistics PowerShell-cmdlethez például az alábbi paranccsal hozhat létre aliast:
New-Alias ShowMB Get-MailBoxStatistics
Amikor a PowerShell ablakba beírja a “ShowMB” szót, a PowerShell megkeresi a ShowMB aliashoz tartozó cmdletet, majd végrehajtja azt.
Információk mentése CSV-fájlban
Az információk CSV-fájlba mentésekor a PowerShell sok szkriptkészítési munkát spórol meg. A PowerShell biztosítja az “Export-CSV” cmdletet, amelyet bármely más PowerShell cmdletekkel együtt használhat. Alapértelmezés szerint minden végrehajtott PowerShell parancs a PowerShell parancsablakban jeleníti meg a kapott információkat, kivéve, ha a parancs végéhez hozzáadja az Export-CSV parancsot, ahogy az alábbi parancsban látható:
Get-ADUser -Filter * -SearchBase “OU=TestUsers,DC=TechGenix,DC=Com” | Export-CSV C:\Temp\AllUsersInAnOU.CSV
Megjegyezzük, hogy a fenti parancsban a parancs végére csak az “Export-CSV” szó kerül, hogy a kimenetet CSV fájlba exportálja.
Mint látja, a PowerShell szkriptek csökkentik a napi üzemeltetési feladatok elvégzésének idejét. A PowerShell három operatív feladat elvégzésére képes; Get, Set és Remove, és a PowerShell cmdletek 97 százaléka ezzel a három szóval kezdődik, így könnyen azonosítható a PowerShell cmdlet funkciója. Azt is elmagyaráztuk, hogy milyen egyszerű két cmdletet egyetlen parancsban kombinálni, hogy hatékonyabbá tegyük a PowerShell szkripteket.