Úvodná » ako » Geek School písanie vášho prvého plného PowerShell skriptu

    Geek School písanie vášho prvého plného PowerShell skriptu

    Pred pár týždňami vám The Geek ukázal, ako môžete použiť príkazový riadok na nájdenie, keď bol počítač naposledy spustený. Pri tejto poslednej inštalácii Geek School for PowerShell napíšeme opakovane príkaz PowerShell, ktorý urobí to isté.

    Nezabudnite si prečítať predchádzajúce články v sérii:

    • Naučte sa ako automatizovať systém Windows pomocou nástroja PowerShell
    • Naučiť sa používať Cmdlets v PowerShell
    • Učenie o používaní objektov v systéme PowerShell
    • Formátovanie učenia, filtrovanie a porovnávanie v systéme PowerShell
    • Naučte sa používať Remoting v PowerShell
    • Použitie PowerShell na získanie informácií o počítači
    • Práca s kolekciami v systéme PowerShell
    • Naučte sa používať úlohy v systéme PowerShell
    • Naučte sa ako rozšíriť PowerShell
    • Učenie premenných PowerShell, vstup a výstup

    Písanie prvého skriptu

    Prvá vec, ktorú musíme urobiť, je nájsť spôsob prístupu k informáciám, ktoré hľadáme. Keďže sa zaoberáme správou informácií, pravdepodobne by sme sa mali pozrieť na využitie WMI, ktoré má naozaj triedu nazvanú Win32_OperatingSystem, ktorá vám umožňuje prezerať podrobné informácie o vašom operačnom systéme vrátane posledného spustenia.

    Takže teraz, keď vieme, kde môžeme nájsť informácie, ktoré hľadáme, otvorte ISE a zadajte nasledujúce.

    Get-WmiObject -Trieda Win32_OperatingSystem -ComputerName localhost |

    Vyberte-objekt-vlastnosť CSName, LastBootUpTime

    Poznámka: Musel som rozdeliť môj kód na dva riadky tak, aby to všetko zapadalo do screenshotu, ale neváhajte ho napísať na jediný riadok. Ak sa rozhodnete rozdeliť na dva riadky, uistite sa, že znak potrubia je posledný znak na riadku 1.

    Teraz kliknite na zelené tlačidlo "Spustiť skript" alebo stlačte kláves F5 na klávesnici na testovanie kódu.

    WMI časy môžu byť trochu tajomné. To znamená, že ak sa pozriete na vlastnosť LastBootUpTime, hovorí to 2013-03-19 v 18:26:21, ale z nejakého dôvodu sa chlapci WMI rozhodli zjednotiť všetko do jedného reťazca. Našťastie pre nás sa nemusíme obávať ručného spracovania reťazca, pretože je to jednoduchší spôsob, hoci je pokročilejší. Budete musieť zmeniť časť Select-Object kódu tak, aby vyzerala takto:

    Select-Object-Vlastníctvo CSName, @ n = "Last Booted";

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

    Čo tu robíme, je vytvorenie vlastného vlastníctva s názvom "Last Booted" a upresnenie, že jeho hodnota musí byť výsledkom volania statickej metódy ToDateTime na vlastnosť LastBootUpTime aktuálneho objektu pipeline. Váš kód by mal teraz vyzerať takto.

    Spustenie kódu teraz prinesie oveľa čitateľnejšiu dobu zavádzania.

    Teraz, keď sme spokojní so základnou funkčnosťou nášho skriptu, musíme ho uložiť. Pre jednoduchosť uložíme to takto:

    C: \ Get-LastBootTime.ps1

    Teraz prepnite na spodnú polovicu ISE a spustite nasledovné:

    C: \ Get-LastBootTime.ps1

    Skvelé! Náš skript pracuje podľa očakávania, avšak s naším skriptom stále existuje jeden problém. Vytvorili sme hardcoded názov počítača, ktorý chceme získať posledný čas zavádzania. Namiesto hodnôt hardcode by sme radšej mali poskytnúť parameter, aby ktokoľvek, kto používa skript, mohol vybrať, na ktorý počítač spustí skript. Za týmto účelom prejdite na začiatok skriptu a vykonajte nasledujúce kroky.

    param (
    [String] $ Názov_počítača
    )

    Potom nahraďte hodnotu hardcoded localhost s premennou $ ComputerName. Skript by mal teraz vyzerať takto:

    Uložte skript, potom sa vráťte späť do spodnej časti ISE a zobrazte pomocníka pre skript.

    pomôcť C: \ Get-LastBootTime.ps1

    Úžasné, takže teraz môžeme zadať názov počítača, ktorý chceme získať posledný čas zavádzania pre používanie nášho nového parametra ComputerName. Bohužiaľ, stále je niekoľko vecí nesprávnych. Po prvé, parameter ComputerName je voliteľný a po druhé, to je najhoršie užitočné, aké som kedy videl, a tak sa tieto problémy rýchlo opravíme. Ak chcete, aby bol parameter ComputerName povinný, zmeňte obsah param bloku na nasledujúci.

    [Parameter (Povinné = $ true)] [string] $ Názov_počítača

    Pokiaľ ide o vytvorenie lepšieho súboru s nápovedou, najbežnejšou metódou je použitie komentárovej pomoci. To znamená, že pridáme navyše extra dlhý komentár k vrcholu mimo skript.

    <#
    .SYNOPSA
    Zobrazuje, kedy sa počítač naposledy spustil.
    .POPIS
    Toto je funkcia WMI wrapper, ktorá vám umožní získať čas, ktorý sa naposledy spustil.
    .PARAMETER Názov_počítača
    Názov počítača, na ktorý chcete spustiť príkaz.
    .Príklad
    Get-LastBootTime -ComputerName localhost
    .LINK
    www.howtogeek.com
    #>

    Keď skončíte všetko, skončíte skriptom, ktorý vyzerá takto.

    Poďme sa pozrieť a pozrieť si náš nový súbor s nápovedou.

    Ach, vyzerá skvele! Teraz, keď je náš skript úplný, musíme urobiť jednu poslednú vec: testovanie. Preto sa chystám vystúpiť z ISE a vrátiť sa späť do konzoly PowerShell, aby sme sa uistili, že neexistujú žiadne anomálie.

    Ak začnete s jednoduchou fóliou a stačí na ňom budovať, ako to robíme v tejto príručke, dostanete to visieť na to v žiadnom okamihu. To je všetko pre túto chvíľu ľudia, uvidíme sa v ďalšej inštalácii Geek School.