15Sep

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

click fraud protection

Pred niekoľkými týždňami vám The Geek ukázal, ako môžete použiť príkazový riadok, aby ste zistili, kedy 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é.

Uistite sa, že ste si prečítali predchádzajúce články v sérii:

  • Naučte sa automatizovať systém Windows s PowerShell
  • Naučiť sa používať kódy v PowerShell
  • Učenie ako používať objekty vo formáte PowerShell
  • Formovanie, filtrovanie a porovnávanie učení v PowerShell
  • Naučte sa používať Remoting inPowerShell
  • Použitie PowerShell na získanie informácií o počítači
  • Práca s kolekciami v PowerShell
  • Naučte sa používať pracovné miesta v PowerShell
  • Naučte sa rozšíriť PowerShell
  • Učíme premenné, vstupy a výstupy PowerShell

Písanie prvého skriptu

Prvá vec, ktorú musíme urobiť, jenájsť spôsob, ako získať prístup k informáciám, ktoré hľadáme. Keďže sa zaoberáme správou informácií, pravdepodobne sa musíme pozrieť na používanie služby 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.

instagram viewer

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 |

Vybrať-Object-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 tajuplné.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 chalani WMI rozhodli zjednotiť všetko do jedného reťazca. Našťastie pre nás sa nemusíte 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 -Property CSName, @{ n = "Last Booted";

eDameTime( $ _. LastBootUpTime)}

Čo robíme tu je vytvorenie vlastného vlastníka s názvom "Last Booted" a špecifikujúceho, že jeho hodnota musí byť výsledkom volania statickej ToDateTimemetóda na vlastnosť LastBootUpTime aktuálneho objektu potrubia. 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 nasledovne:

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 každý, kto používa skript, mohol vybrať, na ktorý počítač sa skript spustí.Za týmto účelom prejdite na začiatok skriptu a vykonajte nasledujúce kroky.

param(
[reťazec] $ ComputerName
)

Následne nahraďte hodnotu hardcoded localhost s premennou $ ComputerName. Skript by mal teraz vyzerať nasledovne:

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

pomoc C: \ Get-LastBootTime.ps1

Awesome, 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 zopár vecí.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)] [reťazec] $ ComputerName

Pokiaľ ide o vytvorenie lepšieho súboru s nápovedou, najbežnejšou metódou je použitie nápovede založenej na komentároch. To znamená, že pridáme navyše extra dlhý komentár na vrchol skriptov.

& #
. SYNOPSIS
Zobrazuje, kedy naposledy počítač začal.
. DESCRIPTION
Toto je funkcia WMI wrapper, ktorá vám umožní získať čas, kedy sa počítač naposledy rozbehol.
. PARAMETER Názov_počítača
Názov počítača, na ktorý chcete spustiť príkaz proti.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;

Akonáhle je všetko urobené, mali by ste skončiť so skriptom vyzerajúcim takto.

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

Ahhh, 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 linkou a stačí na ňu 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.