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

Turinys:

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

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

Video:
Video: How to Kill a Process from Command line in Windows 10 - YouTube 2024, Balandis
Anonim
Prieš keletą savaičių "The Geek" parodė, kaip galite naudoti komandų eilutę, kai paskutinis kompiuteris buvo paleistas. Šiame paskutiniame "PowerShell" "Geek School" diegime mes ketiname parašyti pakartotinai naudojamą "PowerShell" komandą, kad padarytų tą patį.
Prieš keletą savaičių "The Geek" parodė, kaip galite naudoti komandų eilutę, 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"
  • Mokytis naudotis "PowerShell" kompiliacijomis
  • Mokymasis naudoti objektus PowerShell
  • Mokymosi formatavimas, filtravimas ir palyginimas PowerShell
  • Sužinokite, kaip naudoti "Remoting" "PowerShell"
  • "PowerShell" naudojimas kompiuterio informacijai gauti
  • Darbas su "PowerShell" kolekcijomis
  • Sužinokite, kaip naudoti darbo vietas "PowerShell"
  • Sužinokite, kaip išplėsti "PowerShell"
  • Mokymosi PowerShell kintamieji, įvestis ir išvestis

Rašydamas savo pirmąjį scenarijų

Pirmas dalykas, kurį turime padaryti, yra rasti būdą, kaip pasiekti norimą informaciją. 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.

Dabar, kai mes žinome, kur mes galime rasti norimą informaciją, atidarykite ISE ir įveskite toliau nurodytą informaciją.
Dabar, kai mes žinome, kur mes galime rasti norimą informaciją, atidarykite ISE ir įveskite toliau nurodytą informaciją.

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

Pastaba: turėjau padalyti savo kodą į dvi eilutes, kad jis viską atitiktų ekrano kopiją, tačiau 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 žalią mygtuką "Vykdyti scenarijų" arba paspauskite klaviatūros klavišą F5, kad išbandytumėte kodą.
Dabar spustelėkite žalią mygtuką "Vykdyti scenarijų" arba paspauskite klaviatūros klavišą F5, kad išbandytumėte kodą.
WMI kartus gali būti šiek tiek keblios. 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. Jums reikės pakeisti kodo dalį "Select-Object", kad atrodytų taip:
WMI kartus gali būti šiek tiek keblios. 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. Jums reikės pakeisti kodo dalį "Select-Object", kad atrodytų taip:

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

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

Tai, ką mes darome, yra sukurti tinkintą nuosavybę, pavadintą "Paskutinis paleidimas", ir nurodydama, kad jo vertė turi būti rezultatas, paskambinus į dabartinio vamzdyno objekto "LastBootUpTime" turinį "ToDateTime" statinį metodą. Jūsų kodas turėtų atrodyti taip.

Dabar paleisdami kodą, bus lengviau nuskaitomas paskutinis paleidimo laikas.
Dabar paleisdami kodą, bus lengviau nuskaitomas paskutinis paleidimo laikas.
Dabar, kai esame patenkinti pagrindiniu mūsų scenarijaus funkcionalumu, mes turime jį išsaugoti. Paprastumo dėlei išsaugokite jį taip:
Dabar, kai esame patenkinti pagrindiniu mūsų scenarijaus funkcionalumu, mes turime jį išsaugoti. Paprastumo dėlei išsaugokite jį taip:

C:Get-LastBootTime.ps1

Dabar pereikite prie ISE apatinės dalies ir paleiskite šiuos veiksmus:
Dabar pereikite prie ISE apatinės dalies ir paleiskite šiuos veiksmus:

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.
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( [string]$ComputerName )

Tada pakeiskite kietojo kodo vietinio serverio reikšmę naudodami kintamąjį $ ComputerName. Jūsų scenarijus turėtų atrodyti taip:

Išsaugokite savo scenarijų, tada grįžkite į apatinę ISE pusę ir peržiūrėkite savo scenarijaus pagalbą.
Išsaugokite savo scenarijų, tada grįžkite į apatinę ISE pusę ir peržiūrėkite savo scenarijaus pagalbą.

help C:Get-LastBootTime.ps1

Puikus, todėl dabar galime nurodyti kompiuterio, kurio norime gauti paskutinį įkėlimo laiką, vardą, kad galėtume naudoti mūsų naują "ComputerName" parametrą. 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ą.
Puikus, todėl dabar galime nurodyti kompiuterio, kurio norime gauti paskutinį įkėlimo laiką, vardą, kad galėtume naudoti mūsų naują "ComputerName" parametrą. 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ą.

[Parameter(Mandatory=$true)][string]$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.

<#.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 #>

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

Rekomenduojamas: