Geek School Psaní vašeho prvního úplného skriptu PowerShell
Před několika týdny vám The Geek ukázal, jak můžete použít příkazový řádek, abyste zjistili, kdy byl počítač spuštěn naposledy. V této poslední instalaci Geek School for PowerShell napíšeme příkaz PowerShell pro opakované použití, abychom udělali totéž.
Ujistěte se, že jste si přečetli předchozí články v sérii:
- Naučte se automatizovat systém Windows pomocí nástroje PowerShell
- Naučte se používat Cmdlets v PowerShell
- Učení o používání objektů v prostředí PowerShell
- Formátování učení, filtrování a porovnávání v prostředí PowerShell
- Naučte se používat Remoting v PowerShell
- Použití funkce PowerShell pro získání informací o počítači
- Práce s kolekcemi v prostředí PowerShell
- Naučte se používat úlohy ve službě PowerShell
- Naučte se, jak rozšířit funkci PowerShell
- Učení proměnných, vstupů a výstupů PowerShell
Psaní prvního skriptu
První věc, kterou musíme udělat, je najít způsob, jak získat informace, které hledáme. Vzhledem k tomu, že se zabýváme informacemi o řízení, je pravděpodobné, že bychom se měli podívat na použití služby WMI, která skutečně obsahuje třídu nazvanou Win32_OperatingSystem, která vám umožní zobrazit detailní informace o vašem operačním systému, včetně posledního spuštění.
Takže nyní, když víme, kde můžeme najít informace, které hledáme, otevřete ISE a zadejte následující.
Get-WmiObject - Třída Win32_OperatingSystem -ComputerName localhost |
Vyberte-Object-Vlastnost CSName, LastBootUpTime
Poznámka: Musel jsem rozdělit kód na dva řádky tak, aby to všechno zapadalo do screenshotu, ale neváhejte a zadejte jej na jediný řádek. Pokud se rozhodnete rozdělit na dva řádky, ujistěte se, že znak potrubí je poslední znak na řádku 1.
Nyní klikněte na zelené tlačítko "Spustit skript" nebo stisknutím klávesy F5 na klávesnici vyzkoušejte kód.
WMI časy mohou být trochu tajemné. To znamená, že pokud se podíváte na vlastnost LastBootUpTime, říká se 2013-03-19 v 18:26:21, ale z nějakého důvodu se kluci WMI rozhodli spojit vše do jednoho řetězce. Naštěstí pro nás nemáme strach ručně analyzovat řetězec, protože je to snadnější způsob, jak to udělat, i když pokročilejší. Budete muset změnit část Select-Object kódu tak, aby vypadala takto:
Vybrat objekt - vlastnost CSName, @ n = "Last Booted";
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Co zde děláme, je vytvoření vlastního vlastnictví s názvem "Last Booted" a upřesnění, že jeho hodnota musí být výsledkem volání statické metody ToDateTime na vlastnost LastBootUpTime aktuálního objektu pipeline. Váš kód by měl vypadat takto.
Spuštěním kódu nyní získáte mnohem čitelnější poslední spouštěcí čas.
Nyní, když jsme spokojeni se základními funkcemi našeho skriptu, musíme to uložit. Pro zjednodušení si ji uložit jako následující:
C: \ Get-LastBootTime.ps1
Nyní přepněte na spodní polovinu ISE a spusťte následující:
C: \ Get-LastBootTime.ps1
Skvělý! Náš skript pracuje podle očekávání, nicméně v našem skriptu je ještě jeden problém. My jsme hardcoded název počítače, který chceme dostat poslední čas zavádění. Namísto hodnot hardcoding bychom měli spíše poskytnout parametr, aby každý, kdo používá skript, mohl vybrat, na kterém počítači spustí skript. Chcete-li to provést, přejděte na vrchol skriptu a proveďte následující kroky.
param (
[řetězec] $ Název_počítače
).
Pak nahraďte hodnotu hardcoded localhost s proměnnou $ ComputerName. Váš skript by nyní měl vypadat takto:
Uložte svůj skript, pak se přesuňte zpět do dolní části ISE a zobrazte nápovědu skriptu.
pomoc C: \ Get-LastBootTime.ps1
Awesome, takže nyní můžeme zadat název počítače, který chceme získat poslední spouštěcí čas pro použití nového parametru ComputerName. Naneštěstí je stále pár věcí špatně. Zaprvé, parametr ComputerName je volitelný a za druhé, to je nejhorší užitečné, jaké jsem kdy viděl, a tak je třeba tyto problémy rychle řešit. Chcete-li, aby byl parametr ComputerName povinný, změňte obsah param bloku na následující.
[Parametr (Povinný = $ true)] [Řetězec] $ Název_počítače
Co se týče vytváření lepšího souboru nápovědy, nejběžnější metodou je použití nápovědy založené na komentáři. To znamená, že do horní části písma přidáme jen velmi dlouhý komentář.
<#
.SYNOPSE
Zobrazí se, jakmile se počítač spustí.
.POPIS
Jedná se o funkci wrapperu WMI, abyste dostali čas, kdy byl počítač naposledy spuštěn.
.PARAMETER Název_počítače
Název počítače, na který chcete spustit příkaz.
.PŘÍKLAD
Get-LastBootTime -ComputerName localhost
.ODKAZ
www.howtogeek.com
#>
Jakmile je vše hotovo, měli byste skončit skriptem, který vypadá takto.
Pojďme se podívat na náš nový soubor nápovědy.
Aha, vypadá skvěle! Nyní, když je náš skript dokončen, máme ještě jednu poslední věc: testování. Z tohoto důvodu odcházím z ISE a vrátím se zpět do konzoly PowerShell, abychom se ujistili, že neexistují žádné anomálie.
Pokud začnete s jednoduchou linkou a stavíte na ni, jako my v této příručce, dostanete to viset na to v žádném okamžiku. To je vše pro lidi této doby, uvidíme se v příští instalaci Geek School.