Obtenir la disponibilité de L’ordinateur à L’aide de PowerShell

0 Comments

La disponibilité de l’ordinateur est une statistique importante dans la gestion des systèmes. Voici plusieurs façons de déterminer la disponibilité du système pour un ordinateur (à noter que cette liste n’est pas exhaustive):

1. L’onglet Performances du Gestionnaire des tâches affiche la disponibilité de l’ordinateur en jours, Heures, minutes et secondes.

2. L’outil de ligne de commande Systeminfo affiche le dernier démarrage de l’ordinateur.

3. L’ID d’événement le plus récent 6005 dans le journal des événements système de l’ordinateur enregistre le dernier démarrage de l’ordinateur.

4., La classe WMI Win32_OperatingSystem a une propriété LastBootUpTime qui contient le dernier temps de démarrage de l’ordinateur.

Chacune de ces techniques a ses avantages et ses inconvénients. Par exemple, le Gestionnaire des tâches fournit une visibilité rapide pour la disponibilité d’un seul ordinateur, et le journal des événements contient des informations supplémentaires sur l’événement 6005 qui peuvent fournir des informations sur une défaillance du système. Les trois premiers choix ne sont probablement pas les meilleurs à des fins d’automatisation (par exemple, interroger une liste de serveurs pour la disponibilité), alors regardons WMI. Tout d’abord, cependant, nous devons examiner comment WMI renvoie les informations de disponibilité.,

utiliser WMI pour obtenir la disponibilité de L’ordinateur

Il existe plusieurs façons de récupérer la disponibilité d’un ordinateur en utilisant WMI. L’un des moyens les plus évidents, avant Windows PowerShell, était d’utiliser la commande WMIC. Par exemple:

Cette commande récupère la propriété LastBootUpTime de L’instance de classe Win32_OperatingSystem sur l’ordinateur., Dans PowerShell, nous utiliserions L’applet de commande Get-WmiObject plutôt que WMIC:

essayez vous-même ces commandes, et vous verrez que la sortie n’est pas nécessairement « conviviale” car la date et l’heure exprimées dans la propriété LastBootUpTime sont formatées sous forme de chaîne datetime CIM (Common Information Model). Par exemple:

Cette chaîne datetime se traduit par May 12, 2016, 15:48:36 (3:16h00). 125599 est le nombre de microsecondes (nous les ignorerons), et le -360 représente le nombre de minutes décalées par rapport à GMT., Dans cet exemple, -360 signifie que L’heure est 6 heures en retard sur GMT. (De même, +180 signifierait « 3 heures D’avance sur GMT.”)

pour rendre la chaîne CIM datetime plus utilisable, nous devrons la convertir en une date Utilisable (un objet DateTime). Heureusement, PowerShell rend cela simple: la méthode statique ToDateTime du système.Gestion.La classe ManagementDateTimeConverter. net convertit la chaîne CIM datetime en un objet DateTime que nous pouvons utiliser plus facilement dans PowerShell. La Figure 1 montre un exemple.,

Figure 1 – Conversion du dernier temps de démarrage de L’ordinateur en DateTime

dans la Figure 1, la variable dat dateTime contient la date et l’heure du dernier démarrage de l’ordinateur actuel. Pour obtenir la sortie de la disponibilité (plutôt que la date et l’heure du dernier démarrage), nous pouvons la soustraire de l’heure actuelle (Get-Date), ce qui donne un objet TimeSpan contenant la différence. La Figure 2 en montre un exemple.,

Figure 2 – Conversion de la dernière heure de démarrage de l’ordinateur en une disponibilité lisible

la première commande de la Figure 2 crée un objet TimeSpan contenant la différence entre la date et l’heure actuelles et la dernière heure de démarrage (l’objet dat dateTime La deuxième commande génère L’objet TimeSpan, et la dernière commande utilise l’opérateur-f pour générer le TimeSpan sous forme de chaîne formatée lisible qui nous indique que l’ordinateur actuel est en service depuis 4 jours, 19 heures, 56 minutes et 44 secondes.,

obtenir le dernier temps de démarrage à partir d’un ordinateur distant

Les exemples des Figures 1 et 2 ciblent l’ordinateur local. Comment pouvons-nous cibler un ordinateur distant? Heureusement, WMI nous permet de récupérer des informations sur un ordinateur distant en utilisant le paramètre-ComputerName. WMI nous permettra également de spécifier des informations d’identification alternatives pour un ordinateur distant dans un objet PSCredential. La Figure 3 montre un exemple d’obtention du dernier temps de démarrage pour un ordinateur nommé server1.,

Figure 3 – Obtention de la dernière heure de démarrage à partir d’un ordinateur distant

la première commande de la Figure 3 obtient un objet PSCredential dans la variable c cred, et la deuxième commande obtient la chaîne CIM datetime contenant la dernière heure de démarrage pour le serveur La troisième commande convertit la dernière heure de démarrage en un objet DateTime, et la dernière commande affiche la dernière heure de démarrage pour l’ordinateur.

tout mettre ensemble – le Get-Uptime.,PS1 Script

Les exemples présentés dans les Figures 1 et 2 montrent comment obtenir le dernier temps de démarrage de l’ordinateur et montrer comme une chaîne facile à lire, et la Figure 3 montre comment obtenir le dernier temps de démarrage d’un ordinateur distant. Bien sûr, il n’est pas nécessaire de se souvenir de toutes les nuances si nous encapsulons la logique dans un script facile à utiliser. Le script Get-Uptime.ps1 fait tout le travail pour nous. La syntaxe du script est la suivante:

le paramètre-ComputerName est facultatif et nomme le ou les ordinateurs pour lesquels vous souhaitez obtenir les informations de disponibilité., Ce paramètre prend en charge plusieurs objets, l’entrée de pipeline et les objets dotés d’une propriété ComputerName. Le nom du paramètre-ComputerName est facultatif. Si vous omettez ce paramètre, la valeur par défaut est de fournir des informations de disponibilité pour l’ordinateur actuel.

le paramètre-Credential fournit d’autres informations d’identification si vous souhaitez interroger un ou plusieurs ordinateurs distants et que votre compte connecté actuel n’y a pas accès. L’interrogation de la disponibilité ne nécessite pas de privilèges d’administrateur sur l’ordinateur local, mais elle est requise pour les ordinateurs distants.,

le script génère des objets avec trois propriétés: ComputerName (le nom de l’ordinateur), LastBootTime (un DateTime contenant la dernière heure de démarrage de l’ordinateur) et Uptime (une chaîne de disponibilité facile à lire).

temps de disponibilité pour plusieurs ordinateurs

La Figure 4 illustre l’obtention du temps de disponibilité pour trois ordinateurs distants de deux manières différentes.,

Figure 4 – obtenir la disponibilité de trois ordinateurs distants de deux manières différentes

la première commande de la Figure 4 spécifie les trois ordinateurs en tant que paramètre du script Get-Uptime, et la seconde commande spécifie les trois ordinateurs en tant qu’entrée de pipeline. Notez que les deux commandes produisent une sortie identique (sauf que les chaînes de disponibilité dans la sortie de la deuxième commande sont légèrement plus tardives).

étant donné que le script prend en charge l’entrée du pipeline, vous pouvez même utiliser la sortie de L’applet de commande Get-ADComputer pour signaler la disponibilité de tous les ordinateurs d’une unité D’organisation., Par exemple, considérez la commande suivante:

(je divise la commande sur plusieurs lignes pour la rendre plus facile à lire.) Cette commande récupère les noms de tous les ordinateurs de L’unité D’organisation des serveurs, sélectionne uniquement la propriété Name de chaque ordinateur (Select-Object-ExpandProperty), trie la liste des noms d’Ordinateurs et obtient enfin la disponibilité de chaque ordinateur.

Ordinateur Disponibilité Facile

l’Ordinateur le temps de disponibilité est une mesure importante. Il existe une variété de façons d’obtenir du temps de disponibilité, mais pas un moyen simple dans PowerShell. Le Temps De Disponibilité.,PS1 script comble cette lacune et le rend facile à obtenir la disponibilité de l’ordinateur, peu importe si vous voulez obtenir la disponibilité de l’ordinateur actuel ou la disponibilité pour les ordinateurs distants.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *