If-Koubou

Școala Geek: Scrierea primului tău script PowerShell Full

Școala Geek: Scrierea primului tău script PowerShell Full (Cum să)

Acum câteva săptămâni, The Geek ți-a arătat cum poți folosi promptul de comandă pentru a găsi când computerul a fost pornit ultimul. În ultima instalare a școlii Geek pentru PowerShell, vom scrie o comandă PowerShell reutilizabilă pentru a face același lucru.

Asigurați-vă că citiți articolele anterioare din seria:

  • Aflați cum să automatizați Windows cu PowerShell
  • Învățați să utilizați Cmdlets în PowerShell
  • Învățați cum să utilizați obiecte în PowerShell
  • Învățarea formatării, filtrarea și compararea în PowerShell
  • Aflați cum să utilizați Remoting în PowerShell
  • Folosind PowerShell pentru a obține informații despre computer
  • Lucrul cu colecțiile din PowerShell
  • Aflați cum să utilizați locuri de muncă în PowerShell
  • Aflați cum să extindeți PowerShell
  • Învățarea variabilelor PowerShell, intrare și ieșire

Scrierea primului tău script

Primul lucru pe care trebuie să-l facem este să găsim o modalitate de a accesa informațiile pe care le căutăm. Deoarece avem de-a face cu informații de management, probabil că trebuie să aruncăm o privire la utilizarea WMI, care are într-adevăr o clasă numită Win32_OperatingSystem, care vă permite să vizualizați informații verbose despre sistemul dvs. de operare, inclusiv ultima dată când a pornit.

Deci, acum că știm unde găsim informațiile pe care le căutăm, deschideți ISE și tastați următoarele.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

Selectați-Object-Proprietăți CSName, LastBootUpTime

Notă: a trebuit să-mi împărțesc codul pe două linii, astfel încât să se potrivească în totalitate în captura de ecran, dar nu ezitați să-l tastați pe o singură linie. Dacă alegeți să o împărțiți pe două linii, vă rugăm să vă asigurați că caracterul de țeavă este ultimul caracter de pe linia 1.

Acum faceți clic pe butonul verde "Run Script" sau apăsați tasta F5 de pe tastatură pentru a testa codul.

Timpurile WMI pot fi puțin cam criptice. Asta înseamnă că dacă te uiți la proprietatea LastBootUpTime, se spune că 2013-03-19 la 18:26:21, dar din anumite motive băieții WMI au decis să concateze toate acestea într-un singur șir. Din fericire pentru noi, nu trebuie să ne facem griji cu privire la parsarea manuală a șirului, deoarece există o modalitate mai ușoară de a face acest lucru, deși mai avansată. Va trebui să modificați partea Select-Object a codului pentru a arăta astfel:

Selectați-Object-Proprietăți CSName, @ n = "Ultimul Boot";

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

Ceea ce facem aici este crearea unei proprietăți personalizate numită "Last Booted" și specificând că valoarea acesteia trebuie să fie rezultatul apelarii metodei statice ToDateTime pe proprietatea LastBootUpTime a obiectului curent al conductei. Codul dvs. ar trebui să arate așa.

Rularea codului va duce la un timp de încărcare mult mai lizibil.

Acum, că suntem mulțumiți de funcționalitatea de bază a scenariului nostru, trebuie să îl salvăm. Pentru simplificare, hai să o salvăm după cum urmează:

C: \ Get-LastBootTime.ps1

Acum treceți la jumătatea inferioară a ISE și executați următoarele:

C: \ Get-LastBootTime.ps1

Grozav! Scenariul nostru funcționează așa cum era de așteptat, însă există încă o problemă cu scenariul nostru. Am codificat numele computerului pe care vrem să-l primim ultimul timp de încărcare. În loc de valorile hardcode, ar trebui să oferim mai degrabă un parametru, astfel încât oricine utilizează scriptul să poată alege ce computer să ruleze împotriva scriptului. Pentru a face acest lucru, mergeți în partea de sus a scriptului dvs. și faceți următoarele.

PARAM (
[String] $ NumeComputer
)

Apoi, înlocuiți valoarea localhost hardcoded cu variabila $ ComputerName. Scriptul dvs. ar trebui să arate astfel:

Salvați scenariul, apoi mergeți înapoi în jumătatea inferioară a ISE și vizualizați ajutorul pentru scriptul dvs.

ajutați C: \ Get-LastBootTime.ps1

Awesome, deci acum putem specifica numele computerului pe care dorim să-l primim ultimul timp de boot pentru utilizarea noului nostru parametru ComputerName. Din păcate, există încă câteva lucruri greșite. În primul rând, parametrul ComputerName este opțional și, în al doilea rând, acesta este cel mai urât ajutor pe care l-am văzut vreodată, deci să rezolvăm repede aceste probleme. Pentru a face ca parametrul ComputerName să fie obligatoriu, modificați conținutul param blocului la următoarele.

[Parametru (Obligatoriu = $ true)] [șir de caractere] $ ComputerName

În ceea ce privește crearea unui fișier de ajutor mai bun, metoda cea mai comună este utilizarea ajutorului bazat pe comentarii. Asta inseamna ca adaugam un comentariu extra lung la partea de sus a scenariului.

<#
.REZUMAT
Afișează când a pornit PC-ul.
.DESCRIERE
Aceasta este o funcție WMI wrapper pentru a obține timpul în care a pornit ultimul PC.
.PARAMETER ComputerName
Numele computerului pe care doriți să îl executați.
.EXEMPLU
Get-LastBootTime -ComputerName localhost
.LEGĂTURĂ
www.howtogeek.com
#>

Odată ce ați făcut totul, ar trebui să încheiați cu un scenariu care arată în felul acesta.

Hai să mergem acum și să verificăm noul nostru fișier de ajutor.

Aha, arătați grozav! Acum că scriptul nostru este complet, avem un ultim lucru de făcut: testarea. Pentru asta, voi ieși din ISE și mă voi întoarce în consola PowerShell doar pentru a ne asigura că nu există anomalii.

Dacă începeți cu o linie simplă și pur și simplu continuați să construiți pe ea ca și în acest ghid, veți obține atârnă de ea în cel mai scurt timp. Asta e totul pentru oamenii de această dată, te văd în următoarea instalare a Școlii Geek.