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

Sadržaj:

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

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

Video: Škola Geek: Pišite svoj prvi Full PowerShell skripta
Video: Writing 2D Games in C using SDL by Thomas Lively - YouTube 2024, Travanj
Anonim
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.
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.
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 |

Select-Object -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.
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.
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=”Last Booted”;

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.
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:
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:
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.
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.
Spremite skriptu, a zatim se vratite na donju polovicu ISE i pregledajte pomoć za skriptu.

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

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

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

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

Preporučeni: