Geek School: Az első Full PowerShell Script írása

Tartalomjegyzék:

Geek School: Az első Full PowerShell Script írása
Geek School: Az első Full PowerShell Script írása

Videó: Geek School: Az első Full PowerShell Script írása

Videó: Geek School: Az első Full PowerShell Script írása
Videó: A Windows 10 nem érzékeli a fejhallgatót, ha a FIX csatlakoztatva van - YouTube 2024, Április
Anonim
Néhány héttel ezelőtt a The Geek megmutatta, hogyan használhatja a parancssort a számítógép utolsó indításakor. A Geek School of PowerShell utolsó telepítésekor egy újrafelhasználható PowerShell parancsot fogunk írni, hogy ugyanezt tegyük.
Néhány héttel ezelőtt a The Geek megmutatta, hogyan használhatja a parancssort a számítógép utolsó indításakor. A Geek School of PowerShell utolsó telepítésekor egy újrafelhasználható PowerShell parancsot fogunk írni, hogy ugyanezt tegyük.

Olvassa el a sorozatban szereplő cikkeket:

  • További információ a Windows PowerShell automatizálásáról
  • A PowerShell-ben található cmdletek használatának elsajátítása
  • A PowerShell objektumainak használata
  • Tanulási formázás, szűrés és összehasonlítás a PowerShell-ben
  • Tanulja meg a Remoting használatát a PowerShell programban
  • A PowerShell használata a számítógépes információk beszerzéséhez
  • A PowerShell gyűjteményeinek használata
  • További tudnivalók a PowerShell munkahelyeinek használatáról
  • További információ a PowerShell bővítéséről
  • Learning PowerShell változók, bemenetek és kimenetek

Az első forgatókönyv írása

Az első dolog, amit meg kell tennünk, megtalálni a módját, hogy elérjük az általunk 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 rendelkezik egy úgynevezett Win32_OperatingSystem nevű osztályral, amely lehetővé teszi az operációs rendszerrel kapcsolatos részletes információk megtekintését, beleértve a legutóbbi indításkor is.

Tehát most, hogy tudjuk, hol találhatjuk az általunk keresett információkat, nyissuk meg az ISE-t, és írjuk be a következőket.
Tehát most, hogy tudjuk, hol találhatjuk az általunk keresett információkat, nyissuk meg az ISE-t, és írjuk be a következőket.

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

Megjegyzés: Két sorra kellett osztanom a kódot, hogy mindegyik illeszkedjen a képernyőképbe, de szabadon írhatja be egyetlen sorba. Ha két vonal felosztását választja, győződjön meg arról, hogy a cső karakter az utolsó sor.

Most kattintson a zöld "Run Script" gombra, vagy nyomja meg az F5 billentyűt a teszteléshez.
Most kattintson a zöld "Run Script" gombra, vagy nyomja meg az F5 billentyűt a teszteléshez.
A WMI-idők kissé rejtélyesek lehetnek. Ez azt jelenti, hogy ha megnézzük a LastBootUpTime tulajdonságot, azt mondjuk 2013.03.19-én 18:26:21-re, de valamilyen oknál fogva a WMI-k úgy döntöttek, hogy mindegyiket egyetlen karaktersorba kapcsolják. Szerencsére számunkra, nem kell aggódnunk a kézzel történő elemzéshez, mivel egyszerűbb módja van annak, bár még fejlettebb. A kód Select-Object részének módosítania kell, hogy így nézzen ki:
A WMI-idők kissé rejtélyesek lehetnek. Ez azt jelenti, hogy ha megnézzük a LastBootUpTime tulajdonságot, azt mondjuk 2013.03.19-én 18:26:21-re, de valamilyen oknál fogva a WMI-k úgy döntöttek, hogy mindegyiket egyetlen karaktersorba kapcsolják. Szerencsére számunkra, nem kell aggódnunk a kézzel történő elemzéshez, mivel egyszerűbb módja van annak, bár még fejlettebb. A kód Select-Object részének módosítania kell, hogy így nézzen ki:

Select-Object -Property CSName,@{n=”Last Booted”;

e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}

Itt dolgozunk egy "Last Booted" nevű egyedi tulajdonság létrehozásával, és meg kell adni, hogy az értéknek a ToDateTime statikus módnak az aktuális csővezeték-objektum LastBootUpTime tulajdonságára való felhívása eredménye. A kód most úgy néz ki, mint ez.

A kód futtatása most sokkal könnyebben olvasható utolsó indítási időt eredményez.
A kód futtatása most sokkal könnyebben olvasható utolsó indítási időt eredményez.
Most, hogy elégedettek vagyunk a scriptünk alapvető működésével, meg kell mentenünk. Az egyszerűség kedvéért mentse el a következőket:
Most, hogy elégedettek vagyunk a scriptünk alapvető működésével, meg kell mentenünk. Az egyszerűség kedvéért mentse el a következőket:

C:Get-LastBootTime.ps1

Most váltson az ISE alsó felére, és futtassa a következőket:
Most váltson az ISE alsó felére, és futtassa a következőket:

C:Get-LastBootTime.ps1

Nagy! Szkriptünk a várakozásoknak megfelelően működik, de még mindig van egy probléma a forgatókönyvünkkel. Keményen kódoltuk a számítógép nevét, amelyre az utolsó indítási időt szeretnénk elérni. Az értékek hardcoding helyett inkább olyan paramétert kell megadnunk, hogy bárki, aki használja a szkriptet, kiválaszthatja, hogy melyik számítógépen futtatják a szkriptet. Ehhez lépjen a szkript tetejére, és hajtsa végre a következő lépéseket.
Nagy! Szkriptünk a várakozásoknak megfelelően működik, de még mindig van egy probléma a forgatókönyvünkkel. Keményen kódoltuk a számítógép nevét, amelyre az utolsó indítási időt szeretnénk elérni. Az értékek hardcoding helyett inkább olyan paramétert kell megadnunk, hogy bárki, aki használja a szkriptet, kiválaszthatja, hogy melyik számítógépen futtatják a szkriptet. Ehhez lépjen a szkript tetejére, és hajtsa végre a következő lépéseket.

param( [string]$ComputerName )

Ezután cserélje ki a kemény kódolt localhost értéket a $ ComputerName változóval. A szkriptnek így kell kinéznie:

Mentse el a szkriptet, majd menjen vissza az ISE alsó felébe, és nézze meg a parancsfájl segítségét.
Mentse el a szkriptet, majd menjen vissza az ISE alsó felébe, és nézze meg a parancsfájl segítségét.

help C:Get-LastBootTime.ps1

Félelmetes, így most megadhatjuk annak a számítógépnek a nevét, amellyel az utolsó rendszerindítási időt szeretnénk használni az új ComputerName paraméter használatával. Sajnos még mindig van néhány dolog rosszul. Először is, a ComputerName paraméter opcionális, és másodszor, ez a legrondább segítő, amit valaha láttam, ezért gyorsan oldjuk meg ezeket a kérdéseket. A ComputerName paraméter kötelezővé tétele érdekében módosítsa a param blokk tartalmát a következőkre.
Félelmetes, így most megadhatjuk annak a számítógépnek a nevét, amellyel az utolsó rendszerindítási időt szeretnénk használni az új ComputerName paraméter használatával. Sajnos még mindig van néhány dolog rosszul. Először is, a ComputerName paraméter opcionális, és másodszor, ez a legrondább segítő, amit valaha láttam, ezért gyorsan oldjuk meg ezeket a kérdéseket. A ComputerName paraméter kötelezővé tétele érdekében módosítsa a param blokk tartalmát a következőkre.

[Parameter(Mandatory=$true)][string]$ComputerName

A jobb súgófájl készítéséhez a leggyakoribb módszer a megjegyzésekkel kapcsolatos segítség használata. Ez azt jelenti, hogy csak egy extra hosszú megjegyzést adunk hozzá a szkript tetejéhez.

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

Miután mindez megtörtént, egy ilyen parancsfájlnak kell kinéznie.

Ajánlott: