Geek School Skrivning dit første fulde PowerShell script
For nogle uger siden viste The Geek dig, hvordan du kan bruge kommandoprompten til at finde ud af, hvornår din computer blev startet sidst. I denne sidste installation af Geek School for PowerShell skal vi skrive en genbrugs PowerShell-kommando for at gøre det samme.
Sørg for at læse de tidligere artikler i serien:
- Lær at automatisere Windows med PowerShell
- Lære at bruge Cmdlets i PowerShell
- Lære at bruge objekter i PowerShell
- Learning Formatering, filtrering og sammenligning i PowerShell
- Lær at bruge fjernelse i PowerShell
- Brug af PowerShell til at få computeroplysninger
- Arbejder med samlinger i PowerShell
- Lær at bruge Jobs i PowerShell
- Lær, hvordan du udvider PowerShell
- Learning PowerShell Variabler, Input og Output
Skrivning af dit første script
Det første vi skal gøre er at finde en måde at få adgang til de oplysninger, vi leder efter. Da vi beskæftiger os med ledelsesinformation, skal vi sandsynligvis tage et kig på brugen af WMI, som faktisk har en klasse kaldet Win32_OperatingSystem, som giver dig mulighed for at se verbose oplysninger om dit operativsystem, herunder sidste gang det startede.
Så nu hvor vi ved, hvor vi kan finde de oplysninger, vi leder efter, skal du åbne ISE og skrive følgende.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Vælg-objekt -Property CSName, LastBootUpTime
Bemærk: Jeg var nødt til at opdele min kode over to linjer, så det hele passer ind i screenshotet, men vær så velkommen til at skrive det på en enkelt linje. Hvis du vælger at opdele det over to linjer, skal du sørge for at rørkarakteren er det sidste tegn på linje 1.
Klik nu på den grønne "Run Script" -knap eller tryk på F5-tasten på tastaturet for at teste koden.
WMI-tider kan være lidt kryptiske. Dermed mener vi, at hvis du kigger på ejendommen LastBootUpTime, siger den 2013-03-19 kl. 18:26:21, men af en eller anden grund besluttede WMI guys at sammenkæde alt det til en enkelt streng. Heldigvis for os behøver vi ikke bekymre os om manuelt at analysere snoren, da der er en nemmere måde at gøre det på, alligevel mere avanceret. Du skal ændre Select-Object-delen af koden for at se sådan ud:
Vælg-objekt -Property CSName, @ n = "Sidst startet";
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Hvad vi laver her, er at oprette en brugerdefineret egenskab kaldet "Last Booted" og angive, at dens værdi skal være resultatet af at kalde statisk Metod til ToDateTime på LastBootUpTime-egenskaben i det aktuelle pipelineobjekt. Din kode skal nu se sådan ud.
Kørsel af koden nu giver en meget mere læsbar sidste opstartstid.
Nu hvor vi er tilfredse med den grundlæggende funktionalitet af vores script, skal vi gemme det. For at gøre det enkle, lad os gemme det som følgende:
C: \ Get-LastBootTime.ps1
Skift nu til nederste halvdel af ISE'en og kør følgende:
C: \ Get-LastBootTime.ps1
Store! Vores script fungerer som forventet, men der er stadig et problem med vores script. Vi hardcoded navnet på den computer, vi ønsker at få den sidste boot tid til. I stedet for hardcoding-værdier bør vi hellere angive en parameter, så den, der bruger scriptet, kan vælge hvilken computer de kører scriptet imod. For at gøre det skal du gå til toppen af dit script og gøre følgende.
param (
[String] $ ComputerName
)
Udskift derefter den hardcoded localhost-værdi med $ ComputerName-variabel. Dit script skal nu se sådan ud:
Gem dit script, og gå tilbage til den nederste halvdel af ISE'en og se hjælpen til dit script.
hjælp C: \ Get-LastBootTime.ps1
Awesome, så nu kan vi angive navnet på den computer, vi ønsker at få den sidste opstartstid for at bruge vores nye ComputerName-parameter. Desværre er der stadig et par ting galt. For det første er parameteren ComputerName valgfri, og for det andet er det den grimeste hjælpsomme jeg nogensinde har set, så lad os rette disse problemer hurtigt. For at gøre parametern ComputerName obligatorisk, skal du ændre indholdet af param-blokken til følgende.
[Parameter (Obligatorisk = $ true)] [string] $ ComputerName
Hvad angår at lave en bedre hjælpefil, er den mest almindelige metode at bruge kommentarbaseret hjælp. Det betyder, at vi blot tilføjer en ekstra lang kommentar til toppen af ud script.
<#
.SYNOPSIS
Viser, hvornår din pc startede.
.BESKRIVELSE
Dette er en WMI wrapper-funktion for at få den tid, din pc sidst startede.
.PARAMETER ComputerName
Navnet på den computer, du vil køre kommandoen imod.
.EKSEMPEL
Get-LastBootTime -ComputerName localhost
.LINK
www.howtogeek.com
#>
Når alt er færdigt, skal du ende med et script, der ligner dette.
Lad os nu gå og tjekke vores nye hjælpefil.
Ahhh, ser godt ud! Nu da vores script er færdigt, har vi en sidste ting at gøre: testning. Til dette kommer jeg til at gå ud af ISE'en og gå tilbage til PowerShell-konsollen bare for at sikre, at der ikke er nogen anomalier.
Hvis du starter med en simpel en liner og bare fortsætter med at bygge på det som vi gjorde i denne vejledning, vil du få hænge af det på ingen tid. Det er alt for denne gang folk, vi ses i den næste installation af Geek School.