Geek iskola írta az első teljes PowerShell Script-et
Néhány héttel ezelőtt a The Geek megmutatta, hogyan lehet a parancssor segítségével megtalálni, mikor a számítógépet legutóbb elindították. A Geek Iskola PowerShell-hez való utolsó telepítése során egy újrafelhasználható PowerShell parancsot fogunk írni, hogy ugyanezt tegyük.
Ügyeljen arra, hogy olvassa el a sorozat korábbi cikkeit:
- Ismerje meg, hogyan kell automatizálni a Windowsot a PowerShell segítségével
- Tanulj meg a Cmdlet használatát a PowerShell-ben
- Tanulj meg, hogyan kell használni az objektumokat a PowerShell-ben
- Tanulási formázás, szűrés és összehasonlítás a PowerShell-ben
- Ismerje meg a Remoting használatát a PowerShell-ben
- A PowerShell használata számítógépes információk megszerzéséhez
- Munka a gyűjteményekkel a PowerShell-ben
- Ismerje meg, hogyan kell használni a munkákat a PowerShell-ben
- Ismerje meg a PowerShell kiterjesztését
- PowerShell változók, bemenet és kimenet tanulása
Az első szkript írása
Az első dolog, amit meg kell tennünk, megtalálni a módját, hogy elérjük a keresett információkat. Mivel kezelési információkkal foglalkozunk, valószínűleg meg kell vizsgálnunk a WMI használatát, amely valóban egy Win32_OperatingSystem nevű osztályt használ, amely lehetővé teszi az operációs rendszerről szóló részletes információk megtekintését, beleértve az utoljára indított rendszert is.
Most, hogy tudjuk, hol találjuk meg az általunk keresett információt, nyisd meg az ISE-t, és írd be a következőt.
Get-WmiObject-Class Win32_OperatingSystem-Számítógépnév localhost |
Válassza ki a -objektum-Tulajdonság CSName, LastBootUpTime lehetőséget
Megjegyzés: Két sorra kellett osztanom a kódomat, hogy az mindegyik illeszkedjen a screenshotba, de nyugodtan írd be azt egy sorba. Ha úgy dönt, hogy két sorra osztja, kérjük, győződjön meg róla, hogy a cső karakter az utolsó sor az 1. sorban.
Most kattintson a zöld „Futtatás parancsfájl” gombra, vagy nyomja meg az F5 billentyűt a billentyűzeten a kód teszteléséhez.
A WMI-idők kicsit rejtélyesek lehetnek. Ez azt jelenti, ha megnézzük a LastBootUpTime tulajdonságot, azt mondja, 2013-03-19 a 18:26:21, de valamilyen oknál fogva a WMI srácok úgy döntöttek, hogy mindezt egy karakterláncba egyesítik. Szerencsére nekünk nem kell aggódnunk a karaktersorozat manuális elemzésével kapcsolatban, mivel könnyebb módja van annak, ha mégis fejlettebb. Ilyenkor meg kell változtatnia a kód kiválasztása-objektum részét:
Select-Object -Property CSName, @ n = “Utolsó indítás”;
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Amit itt csinálunk, létrehozunk egy „Last Booted” nevű egyéni tulajdonságot, és meg kell adnunk, hogy annak értéke legyen a ToDateTime statikus módszer hívásának az aktuális csővezetékobjektum LastBootUpTime tulajdonságában. A kódodnak így kell kinéznie.
A kód futtatása most egy sokkal olvashatóbb utolsó indítási időt eredményez.
Most, hogy elégedettek vagyunk a forgatókönyvünk alapvető funkcióival, meg kell mentenünk. Az egyszerűség kedvéért mentse el a következőképpen:
C: \ Get-LastBootTime.ps1
Most váltson az ISE alsó felére, és futtassa a következőket:
C: \ Get-LastBootTime.ps1
Nagy! Szkriptünk az elvárt módon működik, azonban még mindig probléma van a szkriptünkkel. Keményen kódoltuk a számítógép nevét, amelyre az utolsó rendszerindítási időt kívánjuk elérni. A kódolási értékek helyett inkább egy paramétert kell megadnunk, hogy bárki, aki használja a szkriptet, kiválaszthatja, hogy melyik számítógépet futtatja a szkript ellen. Ehhez menjen a parancsfájl tetejére, és tegye a következőket.
param (
[String] $ ComputerName
)
Ezután cserélje ki a hardcoded localhost értékét a $ ComputerName változóval. A szkriptnek így kell kinéznie:
Mentse el a szkriptet, majd menjen vissza az ISE alsó felére, és tekintse meg a parancsfájl segítségét.
Segítség C: Get-LastBootTime.ps1
Félelmetes, így most meg tudjuk határozni a számítógép nevét, amelyre az utolsó ComputerName paraméter használatához az utolsó rendszerindítási időt szeretnénk használni. Sajnos még mindig van néhány dolog. Először is, a ComputerName paraméter opcionális, és másodszor, ez a leggazdagabb segédprogram, amit valaha láttam, ezért gyorsan megoldjuk ezeket a problémákat. A ComputerName paraméter kötelezővé tételéhez módosítsa a param blokk tartalmát a következőre.
[Parameter (Kötelező = $ true)] [string] $ ComputerName
Ami a jobb súgófájlt illeti, a leggyakoribb módszer a megjegyzésalapú súgó használata. Ez azt jelenti, hogy csak egy extra hosszú megjegyzést adunk hozzá a out for out for scripthez.
<#
.SZINOPSZIS
Azt mutatja, hogy mikor indult el a számítógép.
.LEÍRÁS
Ez egy WMI-csomagoló funkció, amellyel a számítógép legutóbb elindult.
.PARAMETER Számítógépnév
A számítógép neve, amely ellen akarja futtatni a parancsot.
.PÉLDA
Get-LastBootTime -ComputerName localhost
.LINK
www.howtogeek.com
#>
Amint megtörténik, végül egy ilyen forgatókönyvet kell keresni.
Most menjünk el, és nézzük meg az új súgófájlt.
Ahhh, nagyszerű! Most, hogy a szkriptünk befejeződött, van egy utolsó dolog: tesztelés. Ehhez kilépek az ISE-ből, és visszamegyek a PowerShell konzolba, hogy megbizonyosodjunk róla, hogy nincsenek rendellenességek.
Ha egy egyszerű bélésből indul, és csak építsen rá, mint ahogyan ezt az útmutatóban tettük, akkor nem fog belőle lógni. Ez az idő az emberek számára, a Geek Iskola következő telepítésénél.