Uptime van de Computer verkrijgen met PowerShell

0 Comments

computer uptime is een belangrijke statistiek in systeembeheer. Hier zijn een aantal manieren waarop we de uptime van het systeem voor een computer kunnen bepalen (merk op dat deze lijst geenszins uitputtend is):

1. Het tabblad Prestaties van Taakbeheer toont de uptime van de computer als Dagen, Uren, minuten en seconden.

2. Het opdrachtregelprogramma Systeminfo toont de laatste opstarttijd van de computer.

3. De meest recente gebeurtenis-ID 6005 in het gebeurtenislogboek van de computer registreert de laatste opstarttijd van de computer.

4., De klasse WMI Win32_OperatingSystem heeft een eigenschap LastBootUpTime die de laatste opstarttijd van de computer bevat.

elk van deze technieken heeft zijn voor-en nadelen. Taakbeheer biedt bijvoorbeeld snel inzicht in de uptime van een enkele computer en het gebeurtenislogboek bevat aanvullende informatie rond de gebeurtenis 6005 die inzicht kan bieden over een systeemstoring. De eerste drie keuzes zijn waarschijnlijk niet de beste voor automatiseringsdoeleinden (bijvoorbeeld het opvragen van een lijst met servers voor uptime), dus laten we kijken naar WMI. Eerst moeten we echter kijken hoe WMI uptime-informatie retourneert.,

WMI gebruiken om de Uptime van de Computer te verkrijgen

Er zijn verschillende manieren waarop we de uptime van een computer kunnen ophalen met WMI. Een van de meest voor de hand liggende manieren, voorafgaand aan Windows PowerShell, was om het wmic commando te gebruiken. Bijvoorbeeld:

Dit commando haalt de eigenschap LastBootUpTime op van de win32_operatingsystem class instantie op de computer., In PowerShell zouden we de Get-WmiObject cmdlet gebruiken in plaats van WMIC:

probeer deze commando ‘ s zelf, en u zult zien dat de uitvoer niet noodzakelijk “gebruiksvriendelijk” is omdat de datum en tijd uitgedrukt in de eigenschap LastBootUpTime is geformatteerd als een CIM (Common Information Model) DateTime string. Bijvoorbeeld:

Deze DateTime string vertaalt zich naar May 12, 2016, 15:48:36 (3:48 uur). 125599 is het aantal microseconden( we negeren die), en de -360 vertegenwoordigt het aantal minuten offset van GMT., In dit voorbeeld betekent -360 dat de tijd 6 uur achter GMT ligt. (Evenzo, + 180 zou betekenen ” 3 uur voor GMT.”)

om de CIM DateTime string bruikbaarder te maken, moeten we het converteren naar een bruikbare datum (een DateTime object). Gelukkig maakt PowerShell dit eenvoudig: de todatetime statische methode van het systeem.Management.ManagementDateTimeConverter. net klasse converteert de CIM DateTime string naar een DateTime object dat we gemakkelijker kunnen gebruiken in PowerShell. Figuur 1 toont een voorbeeld.,

figuur 1 – de laatste opstarttijd van de computer omzetten naar een DateTime

in Figuur 1 bevat de variabele $datetime de datum en tijd waarop de huidige computer voor het laatst is opgestart. Om de uitvoer van de uptime te krijgen (in plaats van de datum en tijd van de laatste boot), kunnen we deze aftrekken van de huidige tijd (Get-Date), wat resulteert in een tijdspan object dat het verschil bevat. Figuur 2 laat een voorbeeld hiervan zien.,

Figuur 2 – De laatste opstarttijd van de computer omzetten naar een leesbare uptime

het eerste commando in Figuur 2 maakt een TimeSpan-object met het verschil tussen de huidige datum en tijd en de laatste opstarttijd (het $dateTime-object dat we in Figuur 1 hebben gemaakt). Het tweede commando voert het TimeSpan-object uit, en het laatste commando gebruikt de-F-operator om de TimeSpan uit te voeren als een leesbare opgemaakte tekenreeks die ons vertelt dat de huidige computer 4 dagen, 19 uur, 56 minuten en 44 seconden up is geweest.,

de laatste opstarttijd ophalen van een externe Computer

De voorbeelden in de figuren 1 en 2 richten zich op de lokale computer. Hoe kunnen we ons richten op een computer op afstand? Gelukkig stelt WMI ons in staat om informatie over een externe computer op te halen met behulp van de parameter-ComputerName. Met WMI kunnen we ook alternatieve referenties opgeven voor een externe computer in een PSCredential-object. Figuur 3 toont een voorbeeld van het verkrijgen van de laatste opstarttijd voor een computer met de naam server1.,

Figuur 3 – de laatste opstarttijd ophalen van een externe computer

Het eerste commando in Figuur 3 krijgt een PSCredential object in de $cred variabele, en het tweede commando krijgt de CIM datetime string die de laatste opstarttijd bevat voor de computerserver1 (let op de-ComputerName en-Credential parameters). Het derde Commando converteert de laatste opstarttijd naar een DateTime object, en het laatste commando voert de laatste opstarttijd uit voor de computer.

alles bij elkaar zetten – de Get-Uptime.,ps1 Script

De voorbeelden in de figuren 1 en 2 laten zien hoe de laatste opstarttijd van de computer te krijgen en als een eenvoudig te lezen tekenreeks te tonen, en Figuur 3 laat zien hoe de laatste opstarttijd van een externe computer te krijgen. Natuurlijk is het niet nodig om alle nuances te onthouden als we de logica samenvatten in een eenvoudig te gebruiken script. Het Get-Uptime.ps1 script doet al het harde werk voor ons. De syntaxis van het script is als volgt:

De parameter-ComputerName is optioneel en noemt de computer(s) waarvoor u de uptime-informatie wilt ontvangen., Deze parameter ondersteunt meerdere objecten, pijplijn invoer, en objecten die een computernaam eigenschap hebben. De parameter-ComputerName is optioneel. Als u deze parameter weglaat, wordt standaard uptime-informatie voor de huidige computer uitgevoerd.

De parameter-Credential levert alternatieve referenties als u een of meer externe computers wilt opvragen en uw huidige account geen toegang heeft. Uptime opvragen vereist geen beheerdersrechten op de lokale computer, maar wel voor externe computers.,

het script voert objecten uit met drie eigenschappen: computernaam (de naam van de computer), LastBootTime (een DateTime die de laatste opstarttijd van de computer bevat), en Uptime (een eenvoudig te lezen uptime-tekenreeks).

uptime verkrijgen voor meerdere Computers

Figuur 4 illustreert de uptime voor drie externe computers op twee verschillende manieren.,

Figuur 4 – Getting the uptime for three remote computers two different ways

het eerste commando in Figuur 4 specificeert de drie computers als parameter voor het Get-Uptime script, en het tweede commando specificeert de drie computers als pipeline input. Merk op dat beide commando ‘ s identieke uitvoer produceren (behalve dat de uptime strings in de uitvoer van het tweede commando iets later zijn).

omdat het script pijplijn invoer ondersteunt, kunt u zelfs de uitvoer van de Get-ADComputer cmdlet gebruiken om te rapporteren over de uptime voor alle computers in een organisatie-eenheid., Denk bijvoorbeeld aan het volgende commando:

(Ik splits het commando op meerdere regels om het leesbaarder te maken.) Deze opdracht haalt de namen op van alle computers in de server-OU, selecteert alleen de naameigenschap van elke computer (Select-Object-ExpandProperty), sorteert de lijst met computernamen en krijgt uiteindelijk de uptime van elke computer.

Computer Uptime gemakkelijk gemaakt

Computer uptime is een belangrijke maatstaf. Er zijn verschillende manieren om uptime te krijgen, maar niet een eenvoudige manier in PowerShell. De Get-Uptime.,ps1 script vult deze kloof en maakt het gemakkelijk om de computer uptime te krijgen, ongeacht of u wilt de huidige computer uptime of uptime voor externe computers te krijgen.


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *