Geek mokykla rašo savo pirmąjį pilną „PowerShell“ scenarijų
Prieš kelias savaites „The Geek“ parodė, kaip galite naudoti komandų eilutę, kad rastumėte, kada kompiuteris buvo paleistas paskutinis. Šiame paskutiniame „Geek School for PowerShell“ diegime ketiname parašyti pakartotinai naudojamą „PowerShell“ komandą, kad tai padarytume.
Būtinai perskaitykite ankstesnius serijos straipsnius:
- Sužinokite, kaip automatizuoti „Windows“ su „PowerShell“
- Mokymasis naudoti „Cmdlet“ „PowerShell“
- Mokymasis naudotis objektais „PowerShell“
- Mokymosi formatavimas, filtravimas ir palyginimas „PowerShell“
- Sužinokite, kaip naudoti „Remoting“ „PowerShell“
- „PowerShell“ naudojimas kompiuterio informacijai gauti
- Darbas su kolekcijomis „PowerShell“
- Sužinokite, kaip naudoti darbo vietas „PowerShell“
- Sužinokite, kaip išplėsti „PowerShell“
- „PowerShell“ kintamųjų mokymas, įvestis ir išėjimas
Pirmojo scenarijaus rašymas
Pirmas dalykas, kurį turime padaryti, yra rasti būdą, kaip pasiekti norimą informaciją. Kadangi susiduriame su valdymo informacija, mes turbūt turėtume pažvelgti į WMI naudojimą, kuris iš tikrųjų turi klasę, vadinamą Win32_OperatingSystem, kuri leidžia jums peržiūrėti informaciją apie operacinę sistemą, įskaitant paskutinį kartą, kai jis buvo paleistas.
Taigi dabar mes žinome, kur galime rasti informaciją, kurios ieškome, atverkite ISE ir įveskite toliau pateiktą informaciją.
Get-WmiObjectClass Win32_OperatingSystem-Kompiuterio pavadinimas localhost |
Pasirinkite objektą -Numatytasis CSName, LastBootUpTime
Pastaba: turėjau suskirstyti savo kodą per dvi eilutes, kad visa tai tilptų į ekraną, bet nedvejodami įveskite jį vienoje eilutėje. Jei pasirinksite jį padalyti per dvi eilutes, įsitikinkite, kad vamzdžio simbolis yra paskutinis simbolis eilutėje 1.
Dabar spauskite mygtuką „Pradėti scenarijų“ arba paspauskite klaviatūros klavišą F5, kad patikrintumėte kodą.
WMI laikai gali būti šiek tiek slapti. Tai reiškia, kad pažvelgus į „LastBootUpTime“ nuosavybę, jis sako 2013-03-19 18:26:21, bet dėl kokios nors priežasties WMI vaikinai nusprendė sujungti visą tą į vieną eilutę. Mums, laimei, nereikia jaudintis, kad rankiniu būdu išnagrinėtumėte eilutę, nes tai yra lengviau, nors ir labiau pažengusi. Jums reikės pakeisti kodo pasirinkimo-objekto dalį, kad atrodytų taip:
Pasirinkti objektą - Nekilnojamojo turto CSName, @ n = „Paskutinis įkrovimas“;
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Tai, ką mes čia darome, sukuria pasirinktinę nuosavybę, vadinamą „Paskutinis įkrovimas“, ir nurodo, kad jo vertė turi būti paskambinus ToDateTime statiniam metodui dabartinio dujotiekio objekto „LastBootUpTime“ nuosavybėje. Dabar jūsų kodas turėtų atrodyti taip.
Dabar paleidus kodą, bus lengviau skaityti paskutinį įkrovos laiką.
Dabar, kai esame patenkinti pagrindiniu mūsų scenarijaus funkcionalumu, turime jį išsaugoti. Dėl paprastumo išsaugokime jį taip:
C: Get-LastBootTime.ps1
Dabar pereikite prie apatinės ISE pusės ir atlikite šiuos veiksmus:
C: Get-LastBootTime.ps1
Puikus! Mūsų scenarijus veikia taip, kaip tikėtasi, tačiau vis dar yra viena problema su mūsų scenarijumi. Mes sugalvojome kompiuterio pavadinimą, kuriuo norime gauti paskutinį paleidimo laiką. Vietoj standžiųjų kodų reikšmių turėtume pateikti parametrą, kad kiekvienas, kuris naudoja scenarijų, galėtų pasirinkti, kurį kompiuterį jie naudoja. Norėdami tai padaryti, eikite į savo scenarijaus viršų ir atlikite šiuos veiksmus.
param (
[string] $ Kompiuterio pavadinimas
)
Tada pakeiskite hardcoded localhost reikšmę kintamuoju $ ComputerName. Dabar jūsų scenarijus turėtų atrodyti taip:
Išsaugokite scenarijų, tada grįžkite į apatinę ISE pusę ir peržiūrėkite savo scenarijaus pagalbą.
Pagalba C: Get-LastBootTime.ps1
Nuostabus, todėl dabar galime nurodyti kompiuterio pavadinimą, kuriuo norime gauti paskutinį paleidimo laiką, kad galėtume naudoti mūsų naująjį „ComputerName“ parametrą. Deja, dar yra keletas klaidų. Pirma, „ComputerName“ parametras yra neprivalomas ir, antra, tai pats brangiausias naudotojas, kurį aš kada nors matiau, todėl greitai išspręskime šias problemas. Jei norite, kad „ComputerName“ parametras būtų privalomas, pakeiskite parametrų bloko turinį į toliau nurodytus.
[Parametras (privalomas = $ true)] [eilutė] $ Kompiuterio vardas
Kalbant apie geresnį pagalbos failą, dažniausiai naudojamas komentaras pagrįstas pagalba. Tai reiškia, kad mes pridėjome papildomą ilgą komentarą į viršutinį scenarijų.
<#
.SINOPSIS
Rodo, kada paskutinis kompiuteris buvo paleistas.
.APIBŪDINIMAS
Tai WMI įvynioklės funkcija, leidžianti jūsų kompiuterio paskutinio paleidimo laiko.
.PARAMETRAS Kompiuterio pavadinimas
Kompiuterio, kurį norite paleisti, pavadinimas.
.PAVYZDYS
„Get-LastBootTime“ - kompiuterio pavadinimas localhost
.LINK
www.howtogeek.com
#>
Kai visa tai bus padaryta, turėtumėte baigti tokį scenarijų.
Dabar eikime ir patikrinkite mūsų naują pagalbos failą.
Ahhh, puikiai atrodo! Dabar, kai mūsų scenarijus yra baigtas, turime vieną paskutinį dalyką: testavimą. Dėl to ketinu išeiti iš ISE ir grįžti į „PowerShell“ konsolę, kad galėtume įsitikinti, kad nėra anomalijų.
Jei pradėsite nuo paprasto vieno linijinio laivo ir tiesiog pastatysite ant jo, kaip ir šiame vadove, tuoj po to gausite pakabinti. Tai viskas šiam laikui žmonėms, pamatysite kitą Geek mokyklos diegimą.