Hemsida » hur » Geek School skriver din första Full PowerShell Script

    Geek School skriver din första Full PowerShell Script

    För några veckor sedan visade Geek dig hur du kan använda kommandotolken för att hitta när datorn startades senast. I den här senaste installationen av Geek School for PowerShell ska vi skriva ett återanvändbart PowerShell-kommando för att göra samma sak.

    Var noga med att läsa de föregående artiklarna i serien:

    • Lär dig hur du automatiserar Windows med PowerShell
    • Att lära sig använda Cmdlets i PowerShell
    • Lär dig hur man använder objekt i PowerShell
    • Learning Formatering, filtrering och jämförelse i PowerShell
    • Lär dig använda Remoting i PowerShell
    • Använda PowerShell för att få datorinformation
    • Arbeta med samlingar i PowerShell
    • Lär dig hur du använder jobb i PowerShell
    • Lär dig hur du förlänger PowerShell
    • Learning PowerShell Variabler, Input och Output

    Skriva ditt första skript

    Det första vi behöver göra är att hitta ett sätt att få tillgång till den information vi söker. Eftersom vi hanterar hanteringsinformation behöver vi noga titta på WMI, som verkligen har en klass som heter Win32_OperatingSystem, som låter dig se verbos information om operativsystemet, inklusive den sista gången den startade.

    Så nu när vi vet var vi kan hitta den information vi söker, öppna ISE och skriv följande.

    Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

    Välj-objekt -Property CSName, LastBootUpTime

    Obs! Jag var tvungen att dela upp min kod över två linjer så att den passar in i skärmdumpen, men skriv det enkelt på en enda rad. Om du väljer att dela upp den över två linjer, se till att rörteckenet är det sista tecknet på rad 1.

    Klicka nu på den gröna "Run Script" -knappen eller tryck på F5-tangenten på tangentbordet för att testa koden.

    WMI-tider kan vara lite kryptiska. Med det menar vi att om du tittar på egenskapen LastBootUpTime, säger den 2013-03-19 kl 18:26:21, men av någon anledning bestämde WMI-killarna att de skulle sammanfatta allt detta till en enda sträng. Lyckligtvis för oss behöver vi inte oroa oss för att manuellt analysera strängen, eftersom det finns ett enklare sätt att göra det, om än mer avancerat. Du måste ändra delen Select-Object i koden så att den ser ut så här:

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

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

    Vad vi gör här skapar en egen egenskap som heter "Last Booted" och specificerar att dess värde måste vara resultatet av att anropa statisk Metod till ToDateTime på egenskapen LastBootUpTime för det aktuella pipelineobjektet. Din kod ska nu se ut så här.

    Att köra koden nu kommer att ge en mycket läsbar sista starttid.

    Nu när vi är nöjda med den grundläggande funktionaliteten i vårt manus måste vi spara det. För enkelhet, låt oss spara det som följande:

    C: \ Get-LastBootTime.ps1

    Byt nu till den nedre halvan av ISE och kör följande:

    C: \ Get-LastBootTime.ps1

    Bra! Vårt skript fungerar som förväntat, men det finns fortfarande ett problem med vårt manus. Vi hardcoded namnet på den dator vi vill ha den sista starttiden för. Istället för hårdkodningsvärden borde vi hellre ge en parameter så att den som använder skriptet kan välja vilken dator de kör skriptet mot. För att göra det, gå till toppen av ditt skript och gör följande.

    param (
    [String] $ Datornamn
    )

    Ersätt sedan det hårdkodade localhost-värdet med $ ComputerName-variabeln. Ditt skript borde nu se ut så här:

    Spara ditt skript och gå tillbaka till den nedre halvan av ISE och se hjälpen för ditt skript.

    hjälp C: \ Get-LastBootTime.ps1

    Awesome, så nu kan vi ange namnet på den dator som vi vill få den sista starttiden för att använda vår nya ComputerName-parameter. Tyvärr finns det fortfarande ett fåtal saker fel. För det första är parametern ComputerName valfri, och för det andra är det den fulaste hjälp jag någonsin har sett, så låt oss fixa dessa problem snabbt. För att göra datornamnsparametern obligatorisk, ändra innehållet i param-blocket till följande.

    [Parameter (Obligatorisk = $ sant)] [sträng] $ Dator

    När det gäller att skapa en bättre hjälpfil är den vanligaste metoden att använda kommentarerbaserad hjälp. Det betyder att vi bara lägger till en extra lång kommentar till toppen av ut-skriptet.

    <#
    .SYNOPSIS
    Visar när din dator startades senast.
    .BESKRIVNING
    Detta är en WMI wrapper-funktion för att få den tid som din dator började senast.
    .PARAMETER ComputerName
    Namnet på datorn som du vill köra kommandot mot.
    .EXEMPEL
    Get-LastBootTime -ComputerName localhost
    .LÄNK
    www.howtogeek.com
    #>

    När allt är klart, ska du sluta med ett skript som ser ut så här.

    Låt oss nu gå och kolla in vår nya hjälpfil.

    Ahhh, ser bra ut! Nu när vårt skript är färdigt har vi en sista sak att göra: testning. För detta kommer jag att gå ut ur ISE och gå tillbaka till PowerShell-konsolen så att vi kan se till att det inte finns några avvikelser.

    Om du börjar med ett enkelt liner och bara fortsätter bygga på det som vi gjorde i den här guiden kommer du att hänga på det på nolltid. Det är allt för den här gången, vi ses i nästa installation av Geek School.