If-Koubou

Škola Geek: Pišite svoj prvi Full PowerShell skripta

Škola Geek: Pišite svoj prvi Full PowerShell skripta (Kako da)

Prije nekoliko tjedana, Geek vam je pokazao kako možete koristiti naredbeni redak za pronalaženje zadnjeg pokretanja računala. U ovoj posljednjoj instalaciji Geek škole za PowerShell, započeli smo napisati naredbu za ponovnu uporabu PowerShell da učine isto.

Obavezno pročitajte prethodne članke serije:

  • Saznajte kako automatizirati sustav Windows pomoću programa PowerShell
  • Učenje pomoću Cmdletsa u PowerShellu
  • Učenje kako koristiti objekte u PowerShellu
  • Oblikovanje učenja, filtriranje i uspoređivanje u PowerShellu
  • Saznajte kako koristiti Remoting u PowerShellu
  • Upotreba programa PowerShell za dobivanje informacija o računalu
  • Rad s zbirkama u PowerShellu
  • Saznajte kako koristiti zadatke u PowerShellu
  • Saznajte kako produljiti PowerShell
  • Učenje PowerShell varijabli, ulaz i izlaz

Pisanje prve skripte

Prva stvar koju trebamo učiniti jest pronaći način pristupa informacijama koje tražimo. Budući da se bavimo informacijama o upravljanju, vjerojatno bismo trebali pogledati upotrebu WMI-a, koji doista ima klasu nazvanu Win32_OperatingSystem koja vam omogućuje da vidite opširne informacije o vašem operativnom sustavu, uključujući posljednji put kada je pokrenut.

Sada kad znamo gdje možemo pronaći informacije koje tražimo, otvorite ISE i upišite sljedeće.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

Odaberite-objekt -Property CSName, LastBootUpTime

Napomena: Morao sam podijeliti kôd preko dva retka kako bi se sve uklopio u snimku zaslona, ​​ali slobodno ga upišite na jednu liniju. Ako se odlučite podijeliti preko dvije linije, provjerite je li znak cijevi posljednji znak na liniji 1.

Sada kliknite na zelenu tipku "Run Script" ili pritisnite tipku F5 na tipkovnici da biste testirali kôd.

Vrijeme WMI može biti malo tajnovito. Ovime mislimo ako pogledate entitet LastBootUpTime, kaže 2013-03-19 u 18:26:21, ali iz nekog razloga WMI dečki odlučili su sve to povezati u jedan niz. Srećom za nas, ne moramo se brinuti o ručnom analiziranju niza jer postoji lakši način za to, iako napredniji. Da biste izgledali ovako: trebate promijeniti dio odabranog objekta.

Select-Object -Property CSName, @ n = "Zadnji pokrenut";

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

Ono što radimo ovdje jest stvaranje prilagođenog entiteta pod nazivom "Zadnji pokrenuti" i određivanje da njegova vrijednost mora biti rezultat zvanja statičke metode ToDateTime na entitetu LastBootUpTime trenutnog objekta cjevovoda. Vaš kod sada bi trebao izgledati ovako.

Pokretanje koda sada će dati mnogo češći zadnji put.

Sada kada smo zadovoljni osnovnim funkcijama našeg scenarija, moramo je spremiti. Radi jednostavnosti, spremimo ga kao sljedeće:

C: \ Get LastBootTime.ps1

Sada se prebacite na donju polovicu ISE i pokrenite sljedeće:

C: \ Get LastBootTime.ps1

Sjajno! Naša skripta funkcionira prema očekivanjima, no još uvijek postoji jedan problem s našim scenarijem. Hardcodirali smo ime računala koje želimo dobiti zadnje vrijeme čizma. Umjesto hardcoding vrijednosti, trebamo dati parametar tako da tko god koristi skriptu, može odabrati na kojem računalu on pokreće skriptu. Da biste to učinili, idite na vrh skripte i učinite sljedeće.

param (
[String] $ ComputerName
)

Zatim zamijenite hardcoded localhost vrijednost s varijablom $ ComputerName. Vaša skripta sada bi trebala izgledati ovako:

Spremite skriptu, a zatim se vratite na donju polovicu ISE i pregledajte pomoć za skriptu.

pomoć C: \ Get-LastBootTime.ps1

Strašan, pa sada možemo odrediti ime računala koje želimo dobiti zadnje vrijeme čekanja za korištenje našeg novog parametra ComputerName. Nažalost, još uvijek ima nekoliko pogrešnih stvari. Prvo, parametar ComputerName nije obavezan, a drugo, to je najružnija pomoć koju sam ikad vidio, pa ćemo brzo riješiti te probleme. Da bi parametar ComputerName bio obavezan, promijenite sadržaj param bloka na sljedeće.

[Parametara (Obvezno = $ vrijedi)] [string] $ ComputerName

Što se tiče izradu boljih datoteka pomoći, najčešća metoda je korištenje pomoći koja se temelji na komentarima. To znači da dodamo dodatni dugotrajni komentar na vrh out script.

<#
.SINOPSIS
Pokazuje kada je zadnji put pokrenut računalo.
.OPIS
Ovo je funkcija omota WMI da biste dobili vrijeme kada je računalo počelo.
.PARAMETER računaloName
Naziv Računala kojem želite pokrenuti naredbu.
.PRIMJER
Get-LastBootTime -ComputerName localhost
.VEZA
www.howtogeek.com
#>

Kad se sve to napravi, trebali biste završiti skriptom koja izgleda ovako.

Idemo sada i pogledaj našu novu datoteku pomoći.

Ahhh, super izgleda! Sada kada je skripta završena, imamo još jednu posljednju stvar: testiranje. Za to ću izaći iz ISE-a i vratiti se u PowerShell konzolu samo kako bismo bili sigurni da nema anomalija.

Ako počnete s jednostavnim linijama i samo nastavite graditi na njemu kao što smo to učinili u ovom vodiču, dobit ćete objesiti na to u tren oka. To je sve za ovo vrijeme ljudi, vidimo se u sljedećoj instalaciji Geek škole.