15Sep

Geek School: Psaní vašeho prvního úplného skriptu PowerShell

click fraud protection

Před pár 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 opakovaný příkaz PowerShell, abychom provedli totéž.

Ujistěte se, že jste si přečetli předchozí články v sérii:

  • Naučte se automatizovat systém Windows s PowerShell
  • Naučte se používat cmdlety v PowerShellu
  • Učení o používání objektů v PowerShellu
  • Formátování učení, filtrování a porovnávání v PowerShell
  • Naučte se používat Remoting inPowerShell
  • Použití PowerShell pro získání informací o počítači
  • Práce s kolekcemi v PowerShellu
  • Naučte se používat úlohy v PowerShellu
  • Naučte se rozšířit PowerShell
  • Poznávání proměnných, vstupů a výstupů PowerShell

Psaní prvního skriptu

První věc, kterou musíme udělat, jenají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á má opravdu třídu s názvem 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í.

instagram viewer

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 |

Select-Object -Property 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 jej rozdělit na dva řádky, ujistěte se, že znak potrubí je poslední znak na řádku 1.

Nyní klepněte na zelené tlačítko "Spustit skript" nebo stiskněte klávesu F5 na klávesnici a vyzkoušejte kód.Čas

WMI může být trochu záhadný.To znamená, že pokud se podíváte na vlastnost LastBootUpTime, říká to 2013-03-19 v 18:26:21, ale z nějakého důvodu se kluci WMI rozhodli spojit všechno do jednoho řetězce. Naštěstí pro nás nemusíme dělat starosti o ruční analýze řetězce, protože je to snadnější způsob, jak to udělat, i když pokročilejší.Budete muset změnit část výběru objektu tak, aby vypadala takto:

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

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

To, co zde děláme, vytváří vlastní vlastnost nazvanou "Last Booted" a specifikuje, že její hodnota musí být výsledkem volání statické ToDateTimemetoda 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 ho uložit. Pro jednoduchost uložíme to takto:

C: \ Get-LastBootTime.ps1

Nyní přepněte do dolní poloviny 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 stále existuje 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. Parametr

(
[string] $ 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 vraťte se zpět do dolní části ISE a zobrazte nápovědu pro svůj skript.

help C: \ Get-LastBootTime.ps1

Úžasné, 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 ještě pár věcí špatně.Zaprvé, parametr ComputerName je nepovinný a za druhé, to je nejhorší užitečné, jaké jsem kdy viděl, takže 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

Pokud jde o vytvoření lepšího souboru nápovědy, nejčastější metodou je použití nápovědy založené na komentáři. To znamená, že do horní části scénáře přidáme mimořádně dlouhý komentář.

& #
. SYNOPSIS
Zobrazuje, jakmile naposledy počítač spustí.
. DESCRIPTION
Jedná se o funkci WMI wrapper, která vám pomůže získat čas, kdy vaše PC naposledy započalo.
. PARAMETER Název_počítače
Název počítače, který chcete spustit příkaz proti.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;

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.

Ahoj, vypadá skvěle! Nyní, když je náš skript dokončen, máme ještě jednu poslední věc: testování.Za tímto účelem se chystám opustit ISE a vrátit se zpět do konzoly PowerShell, abychom se ujistili, že neexistují žádné anomálie.

Pokud začínáte s jednoduchou linkou a stavíte na ni tak, jak jsme si udělali v této příručce, obdržíte to okamžitě.To je vše pro lidi této doby, uvidíme se v příští instalaci školy Geek.