Geek School Pisanje vaš prvi Full PowerShell Script
Pred nekaj tedni vam je Geek pokazal, kako lahko z ukazno vrstico poiščete, kdaj je bil vaš računalnik nazadnje zagnan. V tej zadnji namestitvi Geek šole za PowerShell bomo napisali ukaz za večkratno uporabo PowerShell, da naredimo isto stvar.
Preberite prejšnje članke v seriji:
- Naučite se avtomatizirati Windows s PowerShell
- Učenje uporabe ukaznih vrstic v PowerShell
- Učenje uporabe objektov v programu PowerShell
- Učenje oblikovanja, filtriranja in primerjave v programu PowerShell
- Naučite se uporabljati možnost Remoting v PowerShell
- Uporaba programa PowerShell za pridobivanje informacij o računalniku
- Delo z zbirkami v programu PowerShell
- Preberite, kako uporabljati opravila v PowerShell
- Naučite se razširiti PowerShell
- Učenje PowerShell spremenljivk, vhod in izhod
Pisanje prvega scenarija
Prva stvar, ki jo moramo storiti, je najti način za dostop do informacij, ki jih iščemo. Ker se ukvarjamo z informacijami o upravljanju, moramo najbrž pogledati uporabo WMI, ki ima resnično razred, imenovan Win32_OperatingSystem, ki vam omogoča, da si ogledate podrobne informacije o vašem operacijskem sistemu, vključno z zadnjim zagonom..
Zdaj, ko vemo, kje lahko najdemo informacije, ki jih iščemo, odpremo ISE in vpišemo naslednje.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Izberite -Objekt-Lastnost CSName, LastBootUpTime
Opomba: svojo kodo sem morala razdeliti na dve vrstici, tako da se vse ujema s sliko zaslona, vendar jo lahko vtipkate v eno vrstico. Če se odločite, da ga razdelite na dve vrstici, se prepričajte, da je znak za cev zadnji znak v vrstici 1.
Zdaj kliknite zeleni gumb »Run Script« ali pritisnite tipko F5 na tipkovnici, da preizkusite kodo.
Časi WMI so lahko malo skrivnostni. S tem mislimo, če pogledate lastnost LastBootUpTime, piše, da se je v tem primeru WMI fantje odločili, da vse to združijo v en sam niz. Na srečo nam ni treba skrbeti za ročno razčlenjevanje niza, saj je to lažji način, čeprav bolj napreden. Spremeniti morate del kode za izbiro predmeta, da bo videti takole:
Izberite-Object -Property CSName, @ n = ”Last Booted”;
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Pri tem ustvarjamo lastnost po meri, imenovano »Zadnje zagonsko« in določamo, da mora biti njena vrednost rezultat klicanja statične metode ToDateTime na lastnost LastBootUpTime trenutnega objekta cevovoda. Vaša koda bi morala izgledati takole.
Zdaj bo zagon kode prinesel veliko bolj berljiv zadnji čas zagona.
Zdaj, ko smo zadovoljni z osnovno funkcionalnostjo našega scenarija, jo moramo shraniti. Zaradi poenostavitve ga shranimo kot naslednje:
C: Get-LastBootTime.ps1
Sedaj preklopite na spodnjo polovico ISE in zaženite naslednje:
C: Get-LastBootTime.ps1
Super! Naša skripta deluje, kot je bilo pričakovano, vendar je še vedno problem z našo skripto. Ime računalnika, za katerega želimo dobiti zadnje zagonsko obdobje, smo zakodirali. Namesto trdih kodnih vrednosti bi morali raje podati parameter, tako da lahko tisti, ki uporablja skript, izbere, na kateri računalnik izvaja skript. Če želite to narediti, pojdite na vrh svojega skripta in naredite naslednje.
Param (
[string] $ ComputerName
)
Nato zamenjajte trdo kodirano vrednost lokalnega gostitelja s spremenljivko $ ComputerName. Skript bi moral zdaj izgledati takole:
Shranite svoj scenarij, nato pa se vrnite v spodnjo polovico ISE in si oglejte pomoč za vaš scenarij.
pomoč C: Get-LastBootTime.ps1
Awesome, tako da zdaj lahko določimo ime računalnika, ki ga želimo dobiti zadnje zagonske čase za uporabo našega novega parametra ComputerName. Na žalost je še nekaj stvari narobe. Prvič, parameter ComputerName je neobvezen, in drugič, to je najbolj grde, kar sem jih kdaj videl, zato odpravimo ta vprašanja hitro. Če želite, da je parameter ComputerName obvezen, spremenite vsebino param bloka na naslednje.
[Parameter (obvezno = $ true)] [string] $ ComputerName
Kar zadeva boljšo datoteko s pomočjo, je najpogostejša metoda uporaba pomoči na podlagi komentarjev. To pomeni, da dodamo ekstra dolg komentar na vrh scenarija.
<#
.POVZETEK
Prikazuje, kdaj se je vaš računalnik nazadnje zagnal.
.OPIS
To je WMI ovojna funkcija, s katero dobite čas, ko se je vaš računalnik nazadnje zagnal.
.PARAMETER Ime računalnika
Ime računalnika, proti kateremu želite zagnati ukaz.
.PRIMER
Get-LastBootTime -ComputerName localhost
.LINK
www.howtogeek.com
#>
Ko je vse to opravljeno, morate končati s takim scenarijem.
Pojdimo zdaj in si oglejte našo novo datoteko pomoči.
Ahhh, izgledaš odlično! Zdaj, ko je naš scenarij popoln, imamo še eno zadnjo stvar: testiranje. Za to bom zapustil ISE in se vrnil v konzolo PowerShell samo, da bomo lahko zagotovili, da ni nobenih nepravilnosti..
Če začnete s preprosto eno linijo in samo nadaljujete z gradnjo na njej, kot smo to storili v tem priročniku, jo boste v trenutku dobili. To je vse za tokratne ljudi, vidimo se v naslednji namestitvi Geek šole.