Școala Geek Scrierea primului tău script PowerShell
Acum câteva săptămâni, The Geek ți-a arătat cum poți să folosești linia de comandă pentru a găsi când computerul a fost pornit ultimul. În această ultimă instalare a Geek School for 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ățarea de a folosi Cmdlets în PowerShell
- Învățați cum să utilizați obiecte în PowerShell
- Formatul de învățare, 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 într-adevăr are o clasă numită Win32_OperatingSystem, care vă permite să vizualizați informații detaliate despre sistemul dvs. de operare, inclusiv ultima dată când a pornit.
Deci, acum, când știm unde găsim informațiile pe care le căutăm, deschideți ISE și tastați următoarele.
Obțineți-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, asigurați-vă 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ă vă uitaț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 sa trebuie să fie rezultatul chemării metodei statice ToDateTime pe proprietatea LastBootUpTime a obiectului curent al conductei. Codul dvs. ar trebui să arate astfel.
Rularea codului va duce la un timp de pornire mult mai ușor de citit.
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! Scriptul nostru funcționează așa cum era de așteptat, însă există încă o problemă cu scenariul nostru. Am codificat hardcode numele computerului pe care vrem să-l primim ultimul timp de încărcare. În locul valorilor 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 la partea de sus a scriptului dvs. și faceți următoarele.
PARAM (
[String] $ NumeComputer
)
Apoi înlocuiți valoarea localhost hardcoded cu variabila $ ComputerName. Scenariul dvs. ar trebui să arate astfel:
Salvați scriptul, apoi mergeți înapoi în jumătatea inferioară a ISE și vizualizați ajutorul pentru scriptul dvs..
ajutați C: \ Get-LastBootTime.ps1
Minunat, acum putem specifica numele computerului pe care dorim să-l primim ultimul timp de încărcare 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, 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 obișnuită este să utilizați ajutorul bazat pe comentarii. Asta înseamnă că adăugăm un comentariu extra lung la începutul scenariului.
<#
.REZUMAT
Afișează când a pornit PC-ul.
.DESCRIERE
Aceasta este o funcție WMI wrapper pentru a obține timpul la 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
#>
După ce ați terminat totul, ar trebui să încheiați cu un script care arată în felul acesta.
Hai să mergem acum și să verificăm noul dosar de ajutor.
Aha, arătați grozav! Acum că scriptul nostru este complet, avem un ultim lucru de făcut: testarea. Pentru aceasta, 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.