Obtinerea Computer Uptime folosind PowerShell
computer uptime este o statistică importantă în managementul sistemelor. Iată câteva dintre modalitățile prin care putem determina timpul de funcționare al sistemului pentru un computer (rețineți că această listă nu este deloc exhaustivă):
1. Fila de performanță a Managerului de activități afișează timpul de funcționare al computerului ca Zile, Ore, Minute și secunde.
2. Instrumentul de linie de comandă Systeminfo afișează ultimul timp de pornire al computerului.
3. Cel mai recent ID de eveniment 6005 din Jurnalul de evenimente al sistemului computerului înregistrează ultima dată de pornire a computerului.
4., Clasa WMI Win32_OperatingSystem are o proprietate LastBootUpTime care conține ultimul timp de boot al computerului.fiecare dintre aceste tehnici are argumente pro și contra. De exemplu, managerul de activități oferă vizibilitate rapidă pentru timpul de funcționare al unui singur computer, iar jurnalul de evenimente conține informații suplimentare despre evenimentul 6005 care pot oferi informații despre o defecțiune a sistemului. Primele trei opțiuni nu sunt probabil cele mai bune în scopuri de automatizare (de exemplu, interogarea unei liste de servere pentru uptime), așa că haideți să ne uităm la WMI. În primul rând, însă, trebuie să aruncăm o privire la modul în care WMI returnează informațiile despre uptime.,
folosind WMI pentru a obține Computer Uptime
există mai multe moduri în care putem prelua un computer uptime folosind WMI. Una dintre cele mai evidente moduri, înainte de Windows PowerShell, a fost utilizarea comenzii WMIC. De exemplu:
Această comandă preia LastBootUpTime proprietate a Win32_OperatingSystem instanță de clasă de pe computer., În PowerShell, ne-ar folosi Get-WmiObject cmdlet-ului, mai degrabă decât WMIC:
Încercați aceste comenzi tine, și vei vedea că producția nu este neapărat „user-friendly” pentru că la data și ora exprimat în LastBootUpTime proprietate este formatat ca un CIM (Common Information Model) datetime șir. De exemplu:
acest șir datetime se traduce în Mai 12, 2016, 15:48:36 (3:48pm). 125599 este numărul de microsecunde (le vom ignora), iar -360 reprezintă numărul de minute compensate de GMT., În acest exemplu, -360 înseamnă că timpul este de 6 ore în spatele GMT. (În mod similar, +180 ar însemna „3 ore înainte de GMT.”)
pentru a face șirul CIM datetime mai utilizabil, va trebui să-l convertim într-o dată utilizabilă (un obiect DateTime). Din fericire, PowerShell face acest lucru simplu: metoda statică ToDateTime a sistemului.Managementul.Clasa ManagementDateTimeConverter. net convertește șirul CIM datetime într-un obiect DateTime pe care îl putem folosi mai ușor în PowerShell. Figura 1 prezintă un exemplu.,
Figura 1 – Transformarea computerului ultimul timp de boot într-un DateTime
În Figura 1, $dateTime variabilă conține data și ora actuala computer a fost ultima pornit în sus. Pentru a obține ieșirea timpului de funcționare (mai degrabă decât data și ora ultimei bootări), îl putem scădea din ora curentă (Get-Date), ceea ce are ca rezultat un obiect care conține diferența. Figura 2 prezintă un exemplu în acest sens.,
Figura 2 – Transformarea computerului ultimul timp de boot într-un ușor de citit uptime
prima comandă în Figura 2 creează o Durata de timp obiect ce conține diferența dintre data curentă și data și ultima bootare timp ($obiect dateTime am creat în Figura 1). Cea de-a doua comandă ieșiri Durata de timp și de obiect, și ultima comandă folosește -f operator la ieșire pe Durata de timp cât mai lizibil formatat șir care ne spune computerul curent a fost pentru 4 zile, 19 ore, 56 de minute și 44 de secunde.,
obținerea ultimului timp de pornire de pe un Computer la distanță
exemplele din figurile 1 și 2 vizează computerul local. Cum putem viza un computer la distanță? Din fericire, WMI ne permite să recuperăm informații despre un computer la distanță utilizând parametrul-ComputerName. WMI ne va permite, de asemenea, să specificăm acreditările alternative pentru un computer la distanță într-un obiect PSCredential. Figura 3 prezintă un exemplu de a obține ultimul timp de pornire pentru un computer numit server1.,
Figura 3 – Obtinerea ultimul timp de boot de la un computer la distanță
prima comandă în Figura 3 devine un PSCredential obiect în $cred variabil, iar cea de-a doua comanda devine CIM datetime șir ce conține ultimul timp de boot pentru calculator server1 (observați -ComputerName și -Acreditare parametri). A treia comandă transformă ultimul timp de pornire într-un obiect DateTime, iar ultima comandă scoate ultimul timp de pornire pentru computer.
punerea totul împreună-Get-Uptime.,script ps1
exemplele prezentate în Figurile 1 și 2 arată cum se obține ultimul timp de pornire al computerului și se arată ca un șir ușor de citit, iar Figura 3 arată cum se obține ultimul timp de pornire al unui computer la distanță. Desigur, nu este nevoie să vă amintiți toate nuanțele dacă încapsulăm logica într-un script ușor de utilizat. Scriptul Get-Uptime. ps1 face toată munca grea pentru noi. Scenariul e sintaxa este după cum urmează:
– ComputerName parametru este opțional și nume de calculator(s) pentru care doriți să obțineți uptime de informații., Acest parametru acceptă mai multe obiecte, intrare de conducte, și obiecte care au o proprietate ComputerName. Numele parametrului-ComputerName este opțional. Dacă omiteți acest parametru, implicit este de a afișa informații uptime pentru computerul curent.parametrul-Credential furnizează acreditări alternative dacă doriți să interogați unul sau mai multe computere la distanță și contul dvs. curent conectat nu are acces. Interogarea uptime nu necesită privilegii de administrator pe computerul local, dar este necesară pentru computerele la distanță.,
scriptul emite obiecte cu trei proprietăți: ComputerName (numele computerului), LastBootTime (un DateTime care conține ultima dată de pornire a computerului) și Uptime (un șir de uptime ușor de citit).
obținerea timpului de funcționare pentru mai multe computere
Figura 4 ilustrează obținerea timpului de funcționare pentru trei computere la distanță în două moduri diferite.,
Figura 4 – Obtinerea de uptime pentru trei calculatoare de la distanță două moduri diferite
prima comandă în Figura 4 identifică trei calculatoare ca un parametru pentru a Obține-Uptime script-ul, și cea de-a doua comandă specifică trei calculatoare ca conductei de intrare. Rețineți că ambele comenzi produc ieșire identică (cu excepția faptului că șirurile de uptime din ieșirea din a doua comandă sunt puțin mai târziu).deoarece scriptul acceptă intrarea conductei, puteți utiliza chiar și ieșirea cmdlet-ului Get-ADComputer pentru a raporta timpul de funcționare pentru toate computerele dintr-un OU., De exemplu, luați în considerare următoarea comandă:
(am împărțit comanda pe mai multe linii pentru a face mai ușor de citit.) Această comandă preia numele tuturor computerelor din servere OU, selectează numai proprietatea de nume a fiecărui computer (Select-Object-ExpandProperty), sortează lista de nume de computer și, în final, primește timpul de funcționare de la fiecare computer.
computer Uptime Made Easy
Computer uptime este o valoare importantă. Există o varietate de moduri de a obține uptime, dar nu un mod simplu în PowerShell. Timpul De Pornire.,ps1 script umple acest gol și îl face ușor pentru a obține uptime calculator, indiferent dacă doriți să obțineți uptime sau uptime computerului curent pentru computere la distanță.