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

Obsah:

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

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

Video: Geek School: písanie vášho prvého úplného skriptu PowerShell
Video: PS3 #2: The Undead - YouTube 2024, Apríl
Anonim
Pred niekoľkými 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é.
Pred niekoľkými 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 ako používať objekty v PowerShell
  • Formátovanie učenia, filtrovanie a porovnávanie v systéme PowerShell
  • Naučte sa používať Remoting v PowerShell
  • Použitie nástroja 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číme premenné PowerShell, vstup a výstup

Písanie vášho prvého scenára

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 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.

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

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property 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 jedinom riadku. 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.
Teraz kliknite na zelené tlačidlo "Spustiť skript" alebo stlačte kláves F5 na klávesnici na testovanie kódu.
Časy WMI môžu byť trochu záhadné. 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:
Časy WMI môžu byť trochu záhadné. 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”;

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 vlastnosti 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.
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 ich nasledovne:
Teraz, keď sme spokojní so základnou funkčnosťou nášho skriptu, musíme ho uložiť. Pre jednoduchosť uložíme ich nasledovne:

C:Get-LastBootTime.ps1

Teraz prepnite na spodnú polovicu ISE a spustite nasledovné:
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.
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( [string]$ComputerName )

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

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

help 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 zopár vecí. Po prvé, parameter ComputerName je voliteľný a po druhé, to je najneubrejšie užitočné, aké som kedy videl, a tak sa tieto problémy rýchlo vyriešime. Ak chcete, aby bol parameter ComputerName povinný, zmeňte obsah param bloku na nasledujúci.
Úž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 zopár vecí. Po prvé, parameter ComputerName je voliteľný a po druhé, to je najneubrejšie užitočné, aké som kedy videl, a tak sa tieto problémy rýchlo vyriešime. Ak chcete, aby bol parameter ComputerName povinný, zmeňte obsah param bloku na nasledujúci.

[Parameter(Mandatory=$true)][string]$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 Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

Akonáhle je všetko urobené, mali by ste skončiť so skriptom, ktorý vyzerá takto.

Odporúča: