Få Datamaskin Oppetid ved Hjelp av PowerShell

0 Comments

Datamaskinen oppetid er en viktig statistikk i systems management. Her er flere av de måtene vi kan fastslå system oppetid for en datamaskin (merk at denne listen er på ingen måte uttømmende):

1. Task Manager er Resultater-fanen viser datamaskinens oppetid som dager, timer, minutter og sekunder.

2. Den Systeminfo command-line verktøy viser datamaskinens siste oppstart.

3. De siste hendelses-ID 6005 i datamaskinens System event log-poster datamaskinen er siste oppstart.

4., WMI Win32_OperatingSystem klasse har en LastBootUpTime eiendel som inneholder datamaskinens siste oppstart.

Hver av disse teknikkene har sine fordeler og ulemper. For eksempel, Task Manager gir rask synlighet for en enkelt datamaskin som er oppetid, og hendelsesloggen inneholder mer informasjon rundt 6005 hendelse som kan gi innsikt om en systemsvikt. De tre første valgene er trolig ikke det beste for automatisering formål (f.eks., sendes en spørring til en liste over servere for oppetid), så la oss se på WMI. Første, selv om vi må ta en titt på hvordan WMI returnerer oppetid informasjon.,

ved Hjelp av WMI å Få Datamaskinen Oppetid

Det er flere måter vi kan hente en datamaskin oppetid med WMI. En av de mest åpenbare måter, før Windows PowerShell, var å bruke WMIC kommando. For eksempel:

Denne kommandoen gjenoppretter de LastBootUpTime eiendom Win32_OperatingSystem klasse forekomst på datamaskinen., I PowerShell, ville vi bruke Get-WmiObject cmdlet snarere enn WMIC:

Prøv disse kommandoene deg selv, og du vil se at resultatet er ikke nødvendigvis «brukervennlig» fordi den dato og tid uttrykt i LastBootUpTime eiendommen er formatert som en CIM (Common Information Model) datetime strengen. For eksempel:

Dette datetime string, som kan oversettes til Mai 12, 2016, 15:48:36 (3:48pm). 125599 er antall mikrosekunder (vi vil ignorere dem), og -360 representerer antall minutter utlignet fra GMT., I dette eksemplet -360 betyr at tiden er 6 timer bak GMT. (På samme måte, +180 ville bety «3 timer foran GMT.»)

for Å gjøre den CIM datetime string mer brukbare, vi trenger å konvertere den til en brukbar dato (en DateTime-objekt). Heldigvis, PowerShell gjør dette enkelt: ToDateTime statisk metode for Systemet.Management.ManagementDateTimeConverter .NET klasse konverterer CIM datetime-strengen til en DateTime-objekt vi kan bruke mer lett i PowerShell. Figur 1 viser et eksempel.,

Figur 1 – Konvertering datamaskinens siste boot tid til en DateTime –

– >

I Figur 1, $dateTime variabel inneholder dato og klokkeslett gjeldende datamaskin sist ble startet opp. For å få effekt av oppetid (i stedet for dato og klokkeslett for siste boot), kan vi trekke den fra nåværende tid (Få-Dato), noe som resulterer i en Tidsbegrensing objekt som inneholder forskjellen. Figur 2 viser et eksempel på dette.,

Figur 2 – Konvertering datamaskinens siste oppstart inn en lesbar oppetid

Den første kommandoen i Figur 2 skaper en Tidsbegrensing objekt som inneholder forskjellen mellom gjeldende dato og tid, og den siste oppstarts tid (den $dateTime objektet vi opprettet i Figur 1). Den andre kommandoen utganger Tidsbegrensing objekt, og den siste kommandoen bruker -f operatør til output Tidsbegrensing som en lesbar formatert streng som forteller oss at den gjeldende datamaskinen har vært opp til 4 dager, 19 timer, 56 minutter og 44 sekunder.,

Få den Siste Oppstart fra en Ekstern Datamaskin

eksemplene i Figurene 1 og 2 mål for den lokale datamaskinen. Hvordan kan vi målrette en ekstern datamaskin? Heldigvis WMI gir oss muligheten til å hente informasjon om en ekstern datamaskin ved å bruke-Datamaskinnavn parameter. WMI vil også tillate oss å angi alternative legitimasjon for en ekstern datamaskin i en PSCredential objekt. Figur 3 viser et eksempel for å få de siste oppstarts tid for en datamaskin som heter server1.,

Figur 3 – Få de siste oppstart fra en ekstern datamaskin

Den første kommandoen i Figur 3 blir en PSCredential objekt til $cred variabel, og den andre kommandoen får CIM datetime streng som inneholder de siste boot-tid for datamaskinen server1 (merke -Datamaskinnavn og -Credential parametre). Den tredje kommandoen konverterer siste boot tid til en DateTime-objekt, og den siste kommandoen utganger siste boot-tid for datamaskinen.

å Sette Det Hele Sammen – Get-Oppetid.,ps1 Script

eksempler er vist i Figurene 1 og 2 viser hvordan du kan få datamaskinens siste oppstart og vis som en lett-å-lese-strengen, og Figur 3 viser hvordan å få en ekstern datamaskin siste oppstart. Selvfølgelig, det er ikke nødvendig å huske alle nyansene hvis vi kapsle logikk inn i en lett-å-bruke skript. Get-Oppetid.ps1 scriptet gjør alt det harde arbeidet for oss. Skriptet er syntaksen er som følger:

– Datamaskinnavn parameteren er valgfri og navn datamaskinen(e) som du ønsker å få oppetid informasjon., Denne parameteren støtter flere objekter, rør inngang, og objekter som har et Datamaskinnavn eiendom. De -Datamaskinnavn parameter navn er valgfritt. Hvis du utelater denne parameteren, standard er til utgang oppetid informasjon for den aktuelle datamaskinen.

– Credential parameteren for forsyninger alternative legitimasjon hvis du ønsker å søke en eller flere eksterne datamaskiner og din nåværende logget på kontoen ikke har tilgang. Spørring oppetid ikke krever administrator-rettigheter på den lokale datamaskinen, men det er nødvendig for eksterne datamaskiner.,

skriptet utganger objekter med tre egenskaper: Datamaskinnavn (datamaskinens navn), LastBootTime (en DateTime inneholder datamaskinens siste oppstarts tid), og Oppetid (en lett-å-lese oppetid streng).

Få Oppetid for Flere Datamaskiner

Figur 4 illustrerer å få oppetid for tre eksterne datamaskiner på to forskjellige måter.,

Figur 4 – Få oppetid for tre eksterne datamaskiner på to forskjellige måter

Den første kommandoen i Figur 4 angir tre datamaskiner som en parameter til Get-Oppetid script, og den andre kommandoen angir tre datamaskiner som rørledning inngang. Merk at begge kommandoene produsere identiske utgang (bortsett fra at oppetid strenger i resultatet fra den andre kommandoen er litt senere).

Fordi skriptet støtter rørledning-inngang, kan du selv bruke resultatet av Få-ADComputer cmdlet for å rapportere om oppetid for alle datamaskiner i en OU., For eksempel, tenk deg følgende kommando:

(jeg dele kommandoen på flere linjer for å gjøre det lettere å lese.) Denne kommandoen du vil hente navn på alle datamaskiner, Servere OU, velger bare Navnet holderen for hvert computer (Velg-Objekt -ExpandProperty), sorterer listen av datamaskinen navn, og til slutt blir den oppetid på hver datamaskin.

Datamaskinen Oppetid Gjort Enkelt

Datamaskinen oppetid er en viktig beregning. Det finnes en rekke måter å få oppetid men ikke på en enkel måte i PowerShell. Get-Oppetid.,ps1 script fyller i dette gapet, og gjør det enkelt å få datamaskinen oppetid, det spiller ingen rolle om du ønsker å få den aktuelle datamaskinen oppetid oppetid eller for eksterne datamaskiner.


Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *