15Sep
For nogle uger siden viste The Geek dig hvordan du kan bruge kommandoprompten til at finde, 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ær at bruge Cmdlets i PowerShell
- Lær at bruge objekter i PowerShell
- Lær formatering, filtrering og sammenligning i PowerShell
- Lær at bruge fjernelse iPowerShell
- Brug af PowerShell til at få computeroplysninger
- Arbejde med samlinger i PowerShell
- Lær at bruge job i PowerShell
- Lær at forlænge PowerShell
- Læring PowerShell Variabler, input og output
Skrivning af dit første script
Det første, vi skal gøre, erFind vej 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 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 |
Select-Object -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 dele det over to linjer, skal du sørge for, at rørkarakteren er den 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 gange kan være lidt kryptisk. 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 strengen, 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:
Select-Object -Property CSName, @{ n = "Last Booted";
e ={ [Management. ManagementDateTimeConverter]: : ToDateTime( $ _. LastBootUpTime)}}
Hvad vi laver her, skaber en brugerdefineret egenskab kaldet "Last Booted" og angiver, at dens værdi skal være et resultat af at kalde ToDateTime statiskmetode på LastBootUpTime-egenskaben for 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 i 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
Great! 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 give 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(
[streng] $ Computernavn
)
Udskift derefter den hardkodede 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] $ Computernavn
Som for at gøre 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 out script.
& ##
. SYNOPSIS
Viser, hvornår din pc startede.
. DESKRIPTION
Dette er en WMI wrapper-funktion for at få den tid, din pc sidst startede.
. PARAMETER Computernavn
Navnet på den computer, du vil køre kommandoen imod.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;
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 vil jeg gå ud af ISE'en og gå tilbage til PowerShell-konsollen, så vi kan sørge for, 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.