15Sep

Geek School: Skrive ditt første Full PowerShell Script

click fraud protection

For noen uker siden viste The Geek deg hvordan du kan bruke kommandoprompten for å finne når datamaskinen ble startet sist. I denne siste installasjonen av Geek School for PowerShell skal vi skrive en gjenbrukbar PowerShell-kommando for å gjøre det samme.

Husk å lese de forrige artiklene i serien:

  • Lær hvordan du automatiserer Windows med PowerShell
  • Lær å bruke Cmdlets i PowerShell
  • Lær hvordan du bruker objekter i PowerShell
  • Læringsformatering, filtrering og sammenligning i PowerShell
  • Lær å bruke Remoting iPowerShell
  • Bruke PowerShell til å få datamaskininformasjon
  • Arbeide med samlinger i PowerShell
  • Lær hvordan du bruker jobber i PowerShell
  • Lær hvordan du utvider PowerShell
  • Læring PowerShell Variabler, inngang og utdata

Skrive ditt første skript

Det første vi må gjøre er åfinn en måte å få tilgang til informasjonen vi leter etter. Siden vi har å gjøre med ledelsesinformasjon, må vi sannsynligvis ta en titt på bruk av WMI, som faktisk har en klasse som heter Win32_OperatingSystem, som lar deg se verbose opplysninger om operativsystemet ditt, inkludert siste gang det startet.

instagram viewer

Så nå som vi vet hvor vi kan finne informasjonen vi leter etter, åpner du ISE og skriver inn følgende.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

Select-Object -Property CSName, LastBootUpTime

Merk: Jeg måtte dele koden min over to linjer slik at alt passer inn i skjermbildet, men vær så snill å skrive det på en enkelt linje. Hvis du velger å dele den over to linjer, må du passe på at rørkarakteren er den siste tegn på linje 1.

Klikk nå på den grønne "Run Script" -knappen eller trykk F5-tasten på tastaturet for å teste koden.

WMI ganger kan være litt kryptisk. Dermed mener vi at hvis du ser på LastBootUpTime-eiendommen, står det 2013-03-19 klokka 18:26:21, men av en eller annen grunn bestemte WMI-gutta seg for å sammenkalle alt dette til en enkelt streng. Heldigvis for oss, trenger vi ikke å bekymre oss for å manuelt analysere strengen, da det er en enklere måte å gjøre det på, om enn mer avansert. Du må endre Select-Object-delen av koden for å se slik ut:

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

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

Det vi gjør her er å lage en egendefinert egenskap som heter "Last Booted" og angir at verdien sin må være et resultat av å ringe ToDateTime-statiskmetode på LastBootUpTime-egenskapen til det nåværende rørledningsobjektet. Koden din skal nå se slik ut.

Kjører koden nå vil gi en mye mer lesbar siste oppstartstid.

Nå som vi er fornøyd med grunnleggende funksjonalitet i skriptet vårt, må vi lagre det. For enkelhet, la oss lagre det som følgende:

C: \ Get-LastBootTime.ps1

Bytt nå til nederste halvdel av ISE og kjør følgende:

C: \ Get-LastBootTime.ps1

Flott! Skriptet vårt virker som forventet, men det er fortsatt et problem med skriptet vårt. Vi hardcoded navnet på datamaskinen vi ønsker å få siste oppstartstid for. I stedet for hardcoding verdier, bør vi heller gi en parameter slik at den som bruker skriptet, kan velge hvilken datamaskin de kjører skriptet mot. For å gjøre det, gå til toppen av skriptet ditt og gjør følgende.

param(
[streng] $ Computernavn
)

Deretter erstattes den hardkodede localhost-verdien med $ ComputerName-variabelen. Skriptet ditt skal nå se slik ut:

Lagre skriptet ditt, og hodet tilbake til den nederste halvdelen av ISE og se hjelpen til skriptet ditt.

hjelp C: \ Get-LastBootTime.ps1

Awesome, så nå kan vi spesifisere navnet på datamaskinen vi vil ha siste oppstartstid for å bruke vår nye ComputerName-parameter. Dessverre er det fortsatt et par ting feil. For det første er parameteren ComputerName valgfri, og for det andre, det er den grimeste nyttig jeg noensinne har sett, så la oss løse disse problemene raskt. For å gjøre datamaskinparameteren obligatorisk, endre innholdet i param-blokken til følgende.

[Parameter( Obligatorisk = $ true)] [String] $ Datamaskin

Som for å lage en bedre hjelpefil, er den vanligste metoden å bruke kommentarbasert hjelp. Det betyr at vi bare legger til en ekstra lang kommentar til toppen av utskrift.

& ##
. SYNOPSIS
Viser når siste PC startet.
. BESKRIVELSE
Dette er en WMI wrapper-funksjon for å få den tiden PCen din sist startet opp.
. PARAMETER Computernavn
Navnet på datamaskinen du vil kjøre kommandoen mot.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;

Når alt som er gjort, bør du ende opp med et skript som ser ut som dette.

La oss nå gå og sjekke ut vår nye hjelpefil.

Ahhh, ser bra ut! Nå som vårt skript er fullført, har vi en siste ting å gjøre: testing. For dette skal jeg gå ut av ISE og gå tilbake til PowerShell-konsollen akkurat slik at vi kan sørge for at det ikke er noen anomalier.

Hvis du starter med en enkel en liner og bare fortsetter å bygge på den som vi gjorde i denne guiden, vil du få tak i det på kort tid. Det er alt for denne gangen folk, ser deg i neste installasjon av Geek School.