15Sep

"Geek" mokykla: rašydami pirmąjį "PowerShell" scenarijų

Prieš kelias savaites Geek parodė, kaip galite naudoti komandinę eilutę, kad galėtumėte rasti, kai paskutinis kompiuteris buvo paleistas.Šiame paskutiniame "PowerShell" "Geek School" diegime mes ketiname parašyti pakartotinai naudojamą "PowerShell" komandą, kad padarytų tą patį.

Būtinai perskaitykite ankstesnius serijos straipsnius:

  • Sužinokite, kaip automatizuoti "Windows" su "PowerShell"
  • "Mokydamies naudotis" PowerShell "" PowerShell "
  • mokymosi medžiaga. Mokymasis naudoti objektus" PowerShell "
  • mokymosi formatavimas, filtravimas ir palyginimas" PowerShell "
  • . Sužinokite, kaip naudoti" Remoting "PowerShell
  • Naudojant PowerShell gauti kompiuterio informaciją
  • Darbas su kolekcijomis PowerShell
  • Sužinokite, kaip naudoti darbo vietas PowerShell
  • Sužinokite, kaip išplėsti PowerShell
  • mokymosi PowerShell kintamuosius, įvestį ir išvestį

Pirmojo scenarijaus rašymas

Pirmiausia turėtume darytirasti būdą, kaip pasiekti informaciją, kurios ieškote. Kadangi mes susiduriame su valdymo informacija, tikriausiai turime pažvelgti į WMI naudojimą, kuris iš tikrųjų turi klasę Win32_OperatingSystem, kuri leidžia peržiūrėti išsamią informaciją apie jūsų operacinę sistemą, įskaitant paskutinį kartą, kai ji buvo paleista.

Taigi dabar, kai mes žinome, kur mes galime rasti reikalingą informaciją, atidarykite ISE ir įveskite toliau nurodytą informaciją.

Get-WmiObject-klasė Win32_OperatingSystem -ComputerName localhost |

Select-Object -Property CSName, LastBootUpTime

Pastaba: turėjau padalinti mano kodą į dvi eilutes, kad jis viską atitiktų ekrano kopiją, bet galite rašyti jį vienoje eilutėje. Jei nuspręsite jį padalinti į dvi eilutes, įsitikinkite, kad vamzdžio simbolis yra paskutinis 1 eilutėje esantis simbolis.

Dabar spustelėkite ekrano mygtuką "Vykdyti scenarijų" arba paspauskite klaviatūros klavišą F5, kad išbandytumėte kodą.

WMI kartus gali būti šiek tiek keblūs. Tai reiškia, kad jei pažvelgsite į "LastBootUpTime" nuosavybę, tai sakoma 2013-03-19 prie 18:26:21, tačiau dėl tam tikrų priežasčių WMI vaikinai nusprendė sujungti visas šias eilutes. Laimei, mes neturime jaudintis rankiniu būdu analizuojant eilutę, nes tai yra paprastesnis būdas tai padaryti, nors ir labiau pažengęs. Turėsite pakeisti kodo dalį "Pasirinkti objektą" tokiu būdu:

Select-Object -Property CSName, @( n = "Paskutinis paleidžiamas";

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

Čia mes čia kurdami priskirtą nuosavybę, pavadintą "Last Booted", ir nurodydami, kad jo vertė turi būti rezultatas, kai skambinate į ToDateTime staticmetodas dabartinio dujotiekio objekto LastBootUpTime nuosavybe. Jūsų kodas turėtų atrodyti taip.

Dabar paleisdami kodą, bus lengviau nuskaitomas paskutinis paleidimo laikas.

Dabar, kai esame patenkinti pagrindiniu mūsų scenarijaus funkcionalumu, mes turime jį išsaugoti. Norint paprastumo išsaugoti jį taip:

C: \ Get-LastBootTime.ps1

Dabar pereikite į apatinę ISE pusę ir paleiskite tokią versiją:

C: \ Get-LastBootTime.ps1

Puiku! Mūsų scenarijus veikia kaip tikėtasi, tačiau vis dar yra viena iš mūsų scenarijaus problemų.Mes užrašėme kompiuterio, kurio norime gauti paskutinį įkėlimo laiką, pavadinimą.Vietoj kietojo kodavimo verčių mes turėtume greičiau pateikti parametrą, kad kas nors, kas naudoja scenarijų, galėtų pasirinkti, iš kokio kompiuterio jie naudoja scenarijų.Norėdami tai padaryti, eikite į scenarijaus viršuje ir atlikite toliau nurodytus veiksmus.

param(
[eilutė] $ ComputerName
)

Tada pakeiskite kietojo kodo vietinio serverio reikšmę kintamuoju $ ComputerName. 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

Awesome, todėl dabar mes galime nurodyti kompiuterio, kurio norime gauti paskutinį įkrovimo laiką, kad būtų naudojamas mūsų naujas parametras "ComputerName", pavadinimą.Deja, vis dar yra keletas klaidų.Pirma, "ComputerName" parametras yra neprivalomas, ir, antra, tai didžiausias naudingas, kurį kada nors matėčiau, todėl greitai išspręskime šias problemas. Kad parametras "ComputerName" būtų privalomas, pakeiskite param bloko turinį į toliau nurodytą.

[Parametras( privalomas = $ true)] [eilutė] $ ComputerName

Kalbant apie geresnės pagalbos failą, labiausiai paplitęs būdas yra naudoti komentarus paremtą pagalbą.Tai reiškia, kad mes tiesiog pridėti ilgesnį komentarą scenarijaus viršuje.

& lt; #
. SYNOPSIS
Parodo, kada jūsų kompiuteris paleidžiamas.
. DESCRIPTION
Tai WMI apvyniojimo funkcija, skirta nustatyti laiką, per kurį jūsų kompiuteris buvo paleistas.
. PARAMETER KompiuterioName
Kompiuterio, kuriame norite paleisti komandą, pavadinimas.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;

Kai visa tai bus padaryta, jūs turėtumėte užbaigti scenarijų, panašų į tai.

Dabar eikime ir peržiūrėkite mūsų naują pagalbos failą.

Ahhh, atrodo puikiai! Dabar, kai mūsų scenarijus yra baigtas, mes turime vieną paskutinį dalyką: testavimas. Už tai aš ketinu išeiti iš ISE ir grįžti į "PowerShell" konsolę tik taip, kad galėtume įsitikinti, kad nėra jokių anomalijų.

Jei pradedate nuo paprasto viengubo pamušalo ir tiesiog pastatykite ant jo, kaip tai padarėme šiame vadove, jūs negausite jo pakabinti. Visa tai tinka šiems žmonėms, pamatysite tavo kitame "Geek" mokyklos diegime.