Weboldal keresés

PowerShell-szkriptek használata az automatizáláshoz


A „Windows PowerShell megértése” című cikksorozat első részében már tárgyaltuk a szkriptek lehetőségeit.

A szkriptek lehetővé teszik a feladatok automatizálását a PowerShellben. Nem csak a Microsoft rendszerei, például a Windows Server, a Windows Workstations, az Exchange, az SQL vagy a SharePoint automatizálhatók. Sok külső szállító is a PowerShellre támaszkodik szerverszolgáltatásaik kezelésében. Az olyan eszközök, mint a ScriptRunner, még tovább bővítik az adott lehetőségeket: a ScriptRunner Web Service Connector segítségével például könnyedén automatizálhatja a harmadik féltől származó rendszereket a REST API-k használatával.

De mielőtt belevágnánk a PowerShell automatizálásába, egy dologra van szükségünk: a PowerShell-szkriptekre. A következőkben részletesebben kitérünk arra, hogyan kell létrehozni vagy hol lehet őket megtalálni, és milyen lehetőségek adódnak a PowerShellben található szkriptekkel.

Töltse le a kész szkripteket

Az interneten számos olyan szkript található, amelyek PowerShell-en alapulnak, és különböző felhasználási területekkel rendelkeznek. A Microsoft számos ingyenes szkriptet kínál a „Script Resources for IT Professionals” weboldalon, amelyeket letölthet, használhat vagy hozzáadhat. Győződjön meg arról, hogy a szkript a lehető legfrissebb, és jó minősítéssel rendelkezik. A letöltési oldalon az is látható, hogy mely operációs rendszerekre adták ki a szkriptet. A szkriptek licencfeltételei letöltéskor is megjelennek.

Ezt kell tudni a PowerShell-szkriptekről

A PowerShell-szkriptek kiterjedt testreszabásokat végezhetnek a rendszereken. Tehát mielőtt futtatná a szkriptet, nézze meg, és győződjön meg arról, hogy nem hajt végre olyan műveleteket, amelyeket nem szeretne. A PowerShell-parancsfájlokban a PowerShell-parancsok (parancsmagok) mellett más parancsokat is használhat, például a parancssort. Harmadik féltől származó eszközök is használhatók a PowerShell-szkriptekben.

A jó PowerShell-szkripteket digitálisan alá kell írni, hogy a végrehajtási szabályzat (lásd a cikk első részét) ne blokkolja őket. Vészhelyzetben kikapcsolhatja a PowerShell végrehajtási házirendjét. Ez aláírás nélküli szkriptek futtatását eredményezi, de a rendszer többé nem lesz védett. A végrehajtási politika azonban nem nyújt teljes körű védelmet. Az ExecutionPolicy megvédi a rendszert attól, hogy véletlenül elindítson egy parancsfájlt. Az ExecutionPolicy ezért nem átfogó biztonsági funkció. A házirend letiltásához a PowerShellt a rendszergazdai helyi menüből kell elindítani (1. ábra).

1. ábra: A PowerShell és a végrehajtási szabályzat módosításához a PowerShellt rendszergazdaként kell elindítani

A végrehajtási házirend kikapcsolásához használja a következő parancsot:

Set-ExecutionPolicy Unrestricted

A különböző lehetőségeket a sorozat első cikkében már tárgyaltuk. Az internetről származó szkriptek esetében győződjön meg arról, hogy jó hírű forrásból származnak. Ezenkívül a szkriptnek tartalmaznia kell megjegyzéseket a végrehajtandó műveletekről. A szkript elején információnak kell lennie arról, hogy ki készítette a szkriptet, mit csinál, és mit kell tudni róla a felhasználóknak (a 2. ábra szerint).

2. ábra: A szkripteknek elegendő információt kell tartalmazniuk ahhoz, hogy a felhasználók megértsék, mit csinál a szkript az indításakor.

Általában ésszerű, ha a szkripteken belüli megjegyzések jelzik, hogy milyen műveletek következnek a szkriptben, és hogy a felhasználóknak esetleg szerkeszteniük kell valamit a szkriptben.

Indítson el szkripteket

A szkript elindításához először le kell tölteni a számítógép egy könyvtárába. Ezután a szkript meghívásra kerül a *.ps1 fájlon keresztül. Sok szkriptnek még mindig más paraméterekre van szüksége az induláshoz. Erről vagy a script elején kell tájékoztatni, vagy a súgóban kell dokumentálni a lehetőségeket. Ha abban a könyvtárban van, amelyben a szkript tárolva van, a szkriptet a „.skript.ps1” szintaxis után kell elindítania.

Saját szkriptek létrehozása

Ha saját maga szeretne szkripteket létrehozni, használjon megfelelő szerkesztőt. Ilyen például a Windows PowerShell Integrated Scripting Environment (ISE), amely a Windows része, a Microsoft Visual Studio Code, a Microsoft nyílt forráskódú szerkesztője vagy a Notepad++ nyílt forráskódú megoldás.

Szkriptek létrehozásának megtanulása

A PowerShell-szkriptek használatának megtanulásához nem feltétlenül szükséges tanfolyamokat foglalni. Az interneten számos webhely található, amelyek segítenek a PowerShell használatában. A YouTube-videók szintén segítenek a PowerShell elsajátításában. A jól ismert példák a következők:

  • A Microsoft PowerShell használatának első lépései
  • A ScriptRunner Youtube csatornája
  • PowerShell [Bevezető oktatóanyag Hyper-V felhasználóknak és másoknak]
  • Windows PowerShell oktatóanyag kezdőknek
  • Windows-Scripting.com

ISEStereoids - Windows PowerShell ISE kiterjesztés

Az ISESteroids a Windows PowerShell ISE-t használja a parancsfájlok szerkesztéséhez, de kiterjeszti azt. Használatához csak a kiterjesztést kell betöltenie a „Start-Steroids” elemmel. Ez egy PowerShell-modul, nem pedig egy kiegészítő alkalmazás, amely leváltja a PowerShell ISE-t.

Idera PowerShell Plus - Ingyenes szerkesztő

Az Idera ingyenes PowerShell Plus szerkesztője fejlesztői környezetet biztosít a PowerShell-szkriptek számára. Az alkalmazás kész szkriptrészeket tartalmaz, amelyeket beilleszthet a szkriptekbe. Általánosságban elmondható, hogy az Idera PowerShell Plus funkcionalitása hasonló a PowerShell ISE-éhoz, valamint a sablonokból szkriptek létrehozásának képessége. A telepítés után indítsa el az alkalmazást. Ha jogosultsági hibaüzenetet kap, indítsa el az alkalmazást a helyi menüből rendszergazdai jogokkal.

Indítás után megjelenik egy varázsló, amely segít a szerkesztő beállításában. Például a telepítés során vezérelheti a szkriptek végrehajtási szabályzatát, és megtekintheti az aktuális állapotot. Az SQL-kiszolgálókat a szerkesztőhöz is csatlakoztathatja, hogy közvetlenül SQL-kiszolgálókhoz futtathassa a PowerShell-parancsfájlokat. Ezután megkezdheti a szkriptek szerkesztését.

A Visual Studio Code használata a PowerShell-lel

A Microsoft Visual Studio kódját már említettük az előző szakaszokban. Az ingyenes fejlesztői környezettel nem csak programozási nyelvekkel dolgozhat, hanem PowerShell szkripteket is letölthet, és saját szkripteket is fejleszthet.

3. ábra: PowerShell-szkriptek fejlesztése Visual Studio kóddal

A Visual Studio Code (VSCode) lehetővé teszi többplatformos alkalmazások és alkalmazások fejlesztését. A Windows, Linux és macOS X a legfontosabb platformokat támogatja. A Microsoft ingyenesen biztosítja a Visual Studio Code (VSCode) nyílt forráskódot. A PowerShell Core a PowerShell új verziója, amely Linuxra és macOS X-re is elérhető. Ez az új verzió Visual Studio kóddal is használható. A Visual Studio Code Terminál lapja lehetővé teszi a VSCode által támogatott héjak megnyitását. A PowerShell itt is elérhető. A „CTRL+P ” vagy „CMD+P” (macos X) billentyűkombináció használatával a felső területen egy keresősáv jelenik meg. Itt telepítheti a VSCode bővítményeit, például a PowerShell-t. Ehhez írja be az „ext install powershell” parancsot.

A PowerShell Core használata Linuxban

Az utolsó részben említett PowerShell Core Linux alatt is használható. A PowerShell Core Linux-gépre történő telepítéséhez először importálnia kell a GPG Keys nyilvános lerakatait:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list

Ezután a Microsoft regisztrálja az Ubuntu adattárat, és végrehajtja a frissítést:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
sudo apt-get update

A PowerShell Core a Microsoft Ubuntu tárolójából importálva.

Ezután a PowerShell telepítésre kerül, és azonnal elindítható:

sudo apt-get install -y powershell

A telepítés után elérhető a PowerShell, és dolgozhat a shell-el, szkriptek létrehozására is.

Konvertálja saját PowerShell-szkriptjeit

Az eszközök és operációs rendszerek, valamint a jelen cikkben és a cikk első részében leírt eljárások alapján saját szkripteket is létrehozhat. A szkriptek létrehozásához rendelkezésre álló parancsmagok mellett a PowerShell fejlett funkciókat is kínál. Például a Start-Sleep parancsmag segítségével leállíthatja a Windows PowerShell-tevékenységeket. A Start-Sleep -s 10 parancs tíz másodpercre leállítja a szkriptet. A Start-Sleep -m 10000 ezredmásodperceket használ. Ha a | csővezeték operátort használja Out-Printer, hogy a parancsmagok kimenetét átadja az Out-Printer parancsmagnak, a PowerShell kinyomtatja a kimenetet az alapértelmezett nyomtatóra.

A nyomtatót idézőjelben és a címkét a nyomtatóvezérlőben is megadhatja. A Write-Warning parancsmag segítségével megjelenítheti saját figyelmeztetéseit a PowerShellben. A Write-Host a kimenetet a PowerShell-konzolra/gazdagépre írja, ha van ilyen. Ez a két parancs gyakran megtalálható a PowerShell-galériából letölthető szkriptekben. A kimenet színeit a -ForeGroundColor és -BackGroundColor segítségével állíthatja be.

Munka változókkal

Az is érdekes, hogy a shell-en belül is definiálhatunk változókat. Ezeket a változókat egy szkripten belül használhatja. Például, ha az aktuális dátumot a $today változóként szeretné tárolni, akkor beírhatja a $today=Get-Date parancsot a shellbe. A mai dátumot ezután a rendszer $today változóként tárolja. Ha legközelebb beírja a parancsértelmezőbe a $today kifejezést, akkor az aktuális dátum jelenik meg.

A Get-Date -Displayhint Date parancs csak a dátumot jeleníti meg, a Get-Date -Displayhint Time parancs csak az időt. Meghatározhatja, hogy egy adott parancsmag milyen típusú objektumot kap, ha átadja a Get parancs eredményét a Get-Member parancsnak egy folyamatoperátor (|) segítségével. Ez lehetővé teszi a Get-Service | használatát Get-Member parancs a letöltött objektumok elküldéséhez a Get-Member-nek.

Ez a parancs információkat jelenít meg a parancs által visszaadott .NET objektumról. Ezek az információk magukban foglalják az objektum típusát, tulajdonságait és metódusait. Például egy szolgáltatásobjektum összes tulajdonságának megjelenítéséhez írja be a Get-Service | parancsot Get-Member -MemberType *tulajdon.

Fájlok és objektumok másolása, törlése és kezelése

A Copy-Item parancsmag segítségével fájlokat vagy mappákat szkriptekbe másolhat. Másolhat rendszerleíró kulcsokat, tanúsítványokat és egyebeket is. Például a C:\\Scriptstest.txt C:\\Test parancs a test.txt fájlt másolja.

A C:\\Scripts* C:\\Test parancs a megfelelő forrásmappában lévő összes fájlt a célmappába másolja. A C:\\Scripts C:\\Scripts C:\\Test -Recurse parancs egy másolatot készít a C:\\Scripts mappából a C:\ mappában. \Teszt mappába. A -Recurse opció nélkül egy Scripts mappa jön létre a C:\\Test-ben, de a fájlok és mappák nem kerülnek másolásra. A teljes parancs mellett a cpi, cp vagy copy rövidítésekkel is dolgozhat.

Az Elem áthelyezése parancsmag objektumokat helyez át: Elem áthelyezése C:\\Scriptstest.zip c:\\teszt. Itt is lehet helyőrzőkkel dolgozni, akárcsak másoláskor. Alapértelmezés szerint az Elem áthelyezése nem írja felül a célmappában lévő meglévő fájlokat. A -Force paraméter felülírja a meglévő célfájlokat vagy mappákat: Move-Item C:\\Scriptstest.zip C:\\Test -Force. A Elem áthelyezése C:\\Scriptstest.log C:\\Testad.log parancs egyszerre mozgatja és nevezi át a fájlokat.

Az Elem áthelyezése mellett a mi, mv vagy move funkcióval is dolgozhat. Az Új elem parancsmag segítségével új fájlokat vagy mappákat hozhat létre. A New-Item C:\\TempPowerShell -Type Directory paranccsal hozzon létre egy új üres mappát PowerShell néven a C:\\Temp mappában. > mappát.

Új fájl létrehozásához használja ugyanazt a szintaxist, de írja be: Fájl: Új-elem C:\\Scriptscript.txt -Fájl típusa. Használja a New-Item C:\\Scriptsskript.txt -Type File -Force parancsot egy meglévő fájl új üres fájlra cseréjéhez. A New-Item C:\\Scriptsskript.txt -Type File -Force -Value „Szöveg” paranccsal hozzon létre egy új fájlt a megadott szöveggel. Az Új elem helyett használhatja az ni-t is.

Az Add-Content parancsmag segítségével adatokat fűzhet egy szöveges fájlhoz: Add-Content C:\\Scriptstest.txt szöveg. Alapértelmezés szerint az Add-Content beszúrja az új értéket a szövegfájl utolsó karaktere után.

Cserélje le a fájl tartalmát a Set-Content elemre. A Clear-Content parancsmag törli a fájl tartalmát. A futás után a fájl továbbra is létezik, de nincs tartalma. Itt helyettesítő karaktereket is használhat: Clear-Content C:\\Test*. A szöveges fájlok mellett a parancsmag támogatja az Excel-táblázatokat, a Word-dokumentumokat és más fájlokat is. Használhatja a clc parancsot is a Tartalom törlése helyett. Az Elem eltávolítása parancsmag törli az objektumokat: Remove-Item C:\\Scriptstest.txt.

A * helyettesítő karakter törli az objektumokat egy megadott mappában: Remove-Item C:\\Scripts*. A Remove-Item C:\\Scripts* Recurse parancsnak nem kell megerősítenie a törlést. A Remove-Item C:\\Scripts* -Exclude *.doc parancs törli az összes fájlt, kivéve azokat, amelyeket a -Exclude paranccsal zárt ki. A Remove-Item C:\\Scripts* -Include .xls,.doc csak az -Include mögött található fájlokat törli. A két beállítást együtt is használhatja, például: C elem eltávolítása:\\Scripts* -Include *.txt -Exclude *test*.

Itt a PowerShell törli a mappában lévő összes szövegfájlt, kivéve azokat a fájlokat, amelyek fájlnevében a „test” karakterlánc szerepel. A -Whatif paraméter nem távolít el semmit, de visszaadja azt, ami történne: Remove-Item C:\\windows*.exe -Whatif.

Az Elem eltávolítása helyett használhatja a ri, rd, erase, rm parancsokat is. >, rmdir vagy del. A meglévő objektumok átnevezése az Rename-Item parancsmaggal: Rename-Item C:\\Scriptstest.txt new.txt. Az rni és az >ren parancsok is a célhoz vezetnek.

Kapcsolódó cikkek