Získání provozu počítače pomocí PowerShell
computer uptime je důležitou statistikou správy systémů. Zde je několik způsobů, jak můžeme určit dobu provozu systému pro počítač (všimněte si, že tento seznam není v žádném případě vyčerpávající):
1. Karta výkon Správce úloh zobrazuje dobu provozu počítače jako dny, hodiny, minuty a sekundy.
2. Nástroj příkazového řádku Systeminfo zobrazuje poslední čas spuštění počítače.
3. Nejnovější ID události 6005 v protokolu událostí systému počítače zaznamenává poslední spouštěcí čas počítače.
4., Třída WMI Win32_OperatingSystem má vlastnost LastBootUpTime, která obsahuje poslední čas spuštění počítače.
každá z těchto technik má své klady a zápory. Správce úloh například poskytuje rychlou viditelnost pro provozuschopnost jednoho počítače a protokol událostí obsahuje další informace o události 6005, které mohou poskytnout přehled o selhání systému. První tři možnosti pravděpodobně nejsou nejlepší pro účely automatizace (např. dotazování na seznam serverů pro provozuschopnost), takže se podívejme na WMI. Nejprve se však musíme podívat na to, jak WMI vrací informace o dostupnosti.,
pomocí WMI získáte provozuschopnost počítače
existuje několik způsobů, jak můžeme načíst provozuschopnost počítače pomocí WMI. Jedním z nejzřetelnějších způsobů, před Windows PowerShell, bylo použití příkazu WMIC. Například:
Tento příkaz načte LastBootUpTime vlastnost Win32_OperatingSystem třída instance v počítači., V prostředí PowerShell, bychom použít Get-WmiObject rutiny, spíše než WMIC:
Vyzkoušejte tyto příkazy sami, a uvidíte, že výstup není nutně „user-friendly“, protože datum a čas vyjádřený v LastBootUpTime majetku je formátován jako CIM (Common Information Model) datetime string. Například:
tento řetězec datetime se překládá na květen 12, 2016, 15:48:36 (3:48 hodin). 125599 je počet mikrosekund (budeme ignorovat), a -360 představuje počet minut, posun od GMT., V tomto příkladu -360 znamená, že čas je 6 hodin za GMT. (Podobně +180 by znamenalo “ 3 hodiny před GMT.“)
aby byl řetězec CIM datetime použitelnější, budeme jej muset převést na použitelné Datum (objekt DateTime). Naštěstí PowerShell dělá to jednoduché: ToDateTime statická metoda systému.Řízení.Třída ManagementDateTimeConverter. Net převádí řetězec CIM datetime na objekt DateTime, který můžeme snadněji použít v PowerShell. Obrázek 1 ukazuje příklad.,
Obrázek 1 – Převod do počítače poslední boot time do DateTime
na Obrázku 1, $dateTime proměnná obsahuje datum a čas, aktuální počítač byl naposledy spuštěn. Získat výstup z uptime (spíše než datum a čas posledního spuštění), můžeme odečíst od aktuálního času (Get-Date), což má za následek TimeSpan objekt obsahující rozdíl. Obrázek 2 ukazuje příklad tohoto.,
Obrázek 2 – Konverze na počítači je poslední spouštěcí čas do čitelné uptime
první příkaz Obrázek 2 vytvoří TimeSpan objekt, který obsahuje rozdíl mezi aktuální datum a čas a minulý čas startu ($dateTime objekt, který jsme vytvořili v Obrázku 1). Druhý příkaz vypíše TimeSpan objekt, a poslední příkaz používá -f operátor na výstupu na časový úsek, jako čitelné formátovaný řetězec, který nám říká současný počítač byl až za 4 dny, 19 hodin, 56 minut a 44 sekund.,
získání posledního spouštěcího času ze vzdáleného počítače
příklady na obrázcích 1 a 2 cílí na místní počítač. Jak můžeme zacílit na vzdálený počítač? Naštěstí nám WMI umožňuje získat informace o vzdáleném počítači pomocí parametru-ComputerName. WMI nám také umožní zadat alternativní přihlašovací údaje pro vzdálený počítač v objektu PSCredential. Obrázek 3 ukazuje příklad získání posledního času bootování počítače s názvem server1.,
Obrázek 3 – poslední spouštěcí čas ze vzdáleného počítače
první příkaz Obrázek 3 dostane PSCredential objektu do $cred proměnné, a druhý příkaz získá CIM datetime řetězec obsahující poslední spouštěcí čas pro počítač server1 (všimněte si -ComputerName a -Credential parametry). Třetí příkaz převede poslední čas spuštění na objekt DateTime a poslední příkaz vydá poslední čas spuštění počítače.
dát to všechno dohromady-Get-Uptime.,ps1 Script
příklady zobrazené na obrázcích 1 a 2 ukazují, jak získat poslední spouštěcí čas počítače a zobrazit jako snadno čitelný řetězec, a obrázek 3 ukazuje, jak získat poslední spouštěcí čas vzdáleného počítače. Samozřejmě, není třeba si pamatovat všechny nuance, pokud zapouzdříme logiku do snadno použitelného skriptu. Scénář Get-Uptime.ps1 pro nás dělá všechnu těžkou práci. Syntaxe skriptu je následující:
parametr-ComputerName je volitelný a pojmenuje počítač(Y), pro který chcete získat informace o dostupnosti., Tento parametr podporuje více objektů, vstup potrubí a objekty, které mají vlastnost ComputerName. Název parametru-ComputerName je volitelný. Pokud tento parametr vynecháte, výchozí je výstup informací o dostupnosti pro aktuální počítač.
parametr-Credential dodává alternativní přihlašovací údaje, pokud chcete dotazovat jeden nebo více vzdálených počítačů a váš aktuální přihlášený účet nemá přístup. Dotazování uptime nevyžaduje oprávnění správce v místním počítači, ale je vyžadováno pro vzdálené počítače.,
scénář výstupy objekty s tři vlastnosti: ComputerName (název počítače), LastBootTime (DateTime obsahující počítač je poslední čas startu), a Uptime (snadný-k-číst uptime řetězec).
Uptime pro Více Počítačů
Obrázek 4 ilustruje získat uptime pro tři vzdálené počítače dvěma různými způsoby.,
Obrázek 4 – získat uptime pro tři vzdálených počítačích dva různé způsoby,
první příkaz Obrázek 4 určuje tři počítače jako parametr Get-Uptime script, a druhý příkaz určuje tři počítače jako potrubí vstup. Všimněte si, že oba příkazy produkují identický výstup (kromě toho, že uptime řetězce ve výstupu z druhého příkazu jsou o něco později).
protože skript podporuje vstup potrubí, můžete dokonce použít výstup cmdletu Get-ADComputer pro hlášení o dostupnosti všech počítačů v OU., Zvažte například následující příkaz:
(rozdělil jsem příkaz na více řádků, aby bylo snazší číst.) Tento příkaz načíst názvy všech počítačů, na Servery OU, vybere pouze Název vlastnost každého počítače (Select-Object-ExpandProperty), seřadí seznam názvů počítačů, a nakonec se dostane uptime z každého počítače.
computer Uptime Made Easy
computer uptime je důležitá metrika. Existuje celá řada způsobů, jak získat uptime, ale ne jednoduchý způsob, jak v PowerShell. Čas Na Rozjezd.,ps1 script vyplňuje tuto mezeru a usnadňuje získání počítače uptime, bez ohledu na to, zda chcete získat aktuální provozuschopnost počítače nebo uptime pro vzdálené počítače.