Geek School: Écrire votre premier script complet PowerShell

Table des matières:

Geek School: Écrire votre premier script complet PowerShell
Geek School: Écrire votre premier script complet PowerShell

Vidéo: Geek School: Écrire votre premier script complet PowerShell

Vidéo: Geek School: Écrire votre premier script complet PowerShell
Vidéo: How To Kill Programs From The Terminal In Linux - YouTube 2024, Avril
Anonim
Il y a quelques semaines, The Geek vous a montré comment vous pouvez utiliser l'invite de commande pour savoir quand votre ordinateur a été démarré pour la dernière fois. Dans cette dernière installation de Geek School for PowerShell, nous allons écrire une commande PowerShell réutilisable pour faire la même chose.
Il y a quelques semaines, The Geek vous a montré comment vous pouvez utiliser l'invite de commande pour savoir quand votre ordinateur a été démarré pour la dernière fois. Dans cette dernière installation de Geek School for PowerShell, nous allons écrire une commande PowerShell réutilisable pour faire la même chose.

Assurez-vous de lire les articles précédents de la série:

  • Apprenez à automatiser Windows avec PowerShell
  • Apprendre à utiliser les cmdlets dans PowerShell
  • Apprendre à utiliser des objets dans PowerShell
  • Apprentissage du formatage, du filtrage et de la comparaison dans PowerShell
  • Apprendre à utiliser la communication à distance dans PowerShell
  • Utilisation de PowerShell pour obtenir des informations sur l'ordinateur
  • Utilisation de collections dans PowerShell
  • Apprenez à utiliser des emplois dans PowerShell
  • Apprenez à étendre PowerShell
  • Apprentissage des variables PowerShell, entrée et sortie

Écrire votre premier script

La première chose à faire est de trouver un moyen d’accéder aux informations que nous recherchons. Comme nous traitons des informations de gestion, nous devons probablement examiner l'utilisation de WMI, qui a effectivement une classe appelée Win32_OperatingSystem qui vous permet d'afficher des informations détaillées sur votre système d'exploitation, y compris la dernière fois qu'il a démarré.

Alors, maintenant que nous savons où nous pouvons trouver les informations que nous recherchons, ouvrez l’ISE et tapez ce qui suit.
Alors, maintenant que nous savons où nous pouvons trouver les informations que nous recherchons, ouvrez l’ISE et tapez ce qui suit.

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

Remarque: je devais fractionner mon code sur deux lignes pour qu'il tienne dans la capture d'écran, mais n'hésitez pas à le taper sur une seule ligne. Si vous choisissez de le scinder en deux lignes, assurez-vous que le caractère de canal est le dernier caractère de la ligne 1.

Maintenant, cliquez sur le bouton vert "Exécuter le script" ou appuyez sur la touche F5 de votre clavier pour tester le code.
Maintenant, cliquez sur le bouton vert "Exécuter le script" ou appuyez sur la touche F5 de votre clavier pour tester le code.
Les temps WMI peuvent être un peu cryptiques. Nous entendons par là que si vous regardez la propriété LastBootUpTime, il est indiqué que le 19/03/2013 à 18:26:21, mais pour une raison quelconque, les gars de WMI ont décidé de concaténer tout cela en une seule chaîne. Heureusement pour nous, nous n’avons pas à nous préoccuper de l’analyse manuelle de la chaîne car il existe un moyen plus simple de le faire, bien que plus avancé. Vous devrez modifier la partie Select-Object du code pour ressembler à ceci:
Les temps WMI peuvent être un peu cryptiques. Nous entendons par là que si vous regardez la propriété LastBootUpTime, il est indiqué que le 19/03/2013 à 18:26:21, mais pour une raison quelconque, les gars de WMI ont décidé de concaténer tout cela en une seule chaîne. Heureusement pour nous, nous n’avons pas à nous préoccuper de l’analyse manuelle de la chaîne car il existe un moyen plus simple de le faire, bien que plus avancé. Vous devrez modifier la partie Select-Object du code pour ressembler à ceci:

Select-Object -Property CSName,@{n=”Last Booted”;

e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}

Nous créons ici une propriété personnalisée appelée "Last Booted" et spécifions que sa valeur doit être le résultat de l'appel de la méthode statique ToDateTime sur la propriété LastBootUpTime de l'objet de pipeline en cours. Votre code devrait maintenant ressembler à ceci.

Exécuter le code maintenant donnera un dernier temps de démarrage beaucoup plus lisible.
Exécuter le code maintenant donnera un dernier temps de démarrage beaucoup plus lisible.
Maintenant que nous sommes satisfaits des fonctionnalités de base de notre script, nous devons le sauvegarder. Par souci de simplicité, sauvegardons-le comme suit:
Maintenant que nous sommes satisfaits des fonctionnalités de base de notre script, nous devons le sauvegarder. Par souci de simplicité, sauvegardons-le comme suit:

C:Get-LastBootTime.ps1

Passez maintenant à la moitié inférieure de l'ISE et exécutez les opérations suivantes:
Passez maintenant à la moitié inférieure de l'ISE et exécutez les opérations suivantes:

C:Get-LastBootTime.ps1

Génial! Notre script fonctionne comme prévu, mais il y a toujours un problème avec notre script. Nous avons codé en dur le nom de l'ordinateur pour lequel nous souhaitons obtenir la dernière heure de démarrage. Au lieu de coder en dur les valeurs, nous devrions plutôt fournir un paramètre afin que celui qui utilise le script puisse choisir l'ordinateur sur lequel il exécute le script. Pour ce faire, allez en haut de votre script et procédez comme suit.
Génial! Notre script fonctionne comme prévu, mais il y a toujours un problème avec notre script. Nous avons codé en dur le nom de l'ordinateur pour lequel nous souhaitons obtenir la dernière heure de démarrage. Au lieu de coder en dur les valeurs, nous devrions plutôt fournir un paramètre afin que celui qui utilise le script puisse choisir l'ordinateur sur lequel il exécute le script. Pour ce faire, allez en haut de votre script et procédez comme suit.

param( [string]$ComputerName )

Ensuite, remplacez la valeur localhost codée en dur par la variable $ ComputerName. Votre script devrait maintenant ressembler à ceci:

Enregistrez votre script, puis revenez à la moitié inférieure de l'ISE et affichez l'aide relative à votre script.
Enregistrez votre script, puis revenez à la moitié inférieure de l'ISE et affichez l'aide relative à votre script.

help C:Get-LastBootTime.ps1

Génial, alors nous pouvons maintenant spécifier le nom de l'ordinateur sur lequel nous voulons obtenir la dernière heure de démarrage pour utiliser notre nouveau paramètre ComputerName. Malheureusement, il y a encore quelques problèmes. Premièrement, le paramètre ComputerName est facultatif, et deuxièmement, c’est l’aide la plus laide que j’ai jamais vue. Laissons donc régler ce problème rapidement. Pour rendre le paramètre ComputerName obligatoire, modifiez le contenu du bloc param comme suit.
Génial, alors nous pouvons maintenant spécifier le nom de l'ordinateur sur lequel nous voulons obtenir la dernière heure de démarrage pour utiliser notre nouveau paramètre ComputerName. Malheureusement, il y a encore quelques problèmes. Premièrement, le paramètre ComputerName est facultatif, et deuxièmement, c’est l’aide la plus laide que j’ai jamais vue. Laissons donc régler ce problème rapidement. Pour rendre le paramètre ComputerName obligatoire, modifiez le contenu du bloc param comme suit.

[Parameter(Mandatory=$true)][string]$ComputerName

Pour créer un meilleur fichier d’aide, la méthode la plus courante consiste à utiliser l’aide basée sur les commentaires. Cela signifie que nous ajoutons simplement un commentaire très long en haut du script.

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

Une fois que tout cela est fait, vous devriez vous retrouver avec un script ressemblant à ceci.

Conseillé: