Page d'accueil » comment » École Geek écrivant votre premier script complet PowerShell

    École Geek écrivant votre premier script complet PowerShell

    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. Dans la mesure où 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.

    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 séparer sur 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 "Run 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 dans une seule chaîne. Heureusement pour nous, nous n'avons pas à nous soucier d'analyser manuellement 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 = "Dernier démarrage";

    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.

    Maintenant que nous sommes satisfaits des fonctionnalités de base de notre script, nous devons le sauvegarder. Pour plus 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:

    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 voulons obtenir la dernière heure de démarrage. Au lieu de coder en dur, 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 (
    [chaîne] $ 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..

    aide C: \ Get-LastBootTime.ps1

    Génial, nous pouvons maintenant spécifier le nom de l'ordinateur sur lequel nous souhaitons obtenir la dernière heure de démarrage pour utiliser notre nouveau paramètre ComputerName. Malheureusement, il y a encore quelques erreurs. Premièrement, le paramètre ComputerName est facultatif, et deuxièmement, c’est l’aide la plus laide que j’ai jamais vue. Corrigeons donc ces problèmes 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 des commentaires. Cela signifie que nous ajoutons simplement un long commentaire au début du script.

    <#
    .SYNOPSIS
    Indique la date du dernier démarrage de votre ordinateur.
    .LA DESCRIPTION
    Ceci est une fonction de wrapper WMI pour obtenir l'heure de la dernière mise en route de votre PC.
    .PARAMETER ComputerName
    Le nom de l'ordinateur sur lequel vous voulez exécuter la commande.
    .EXEMPLE
    Get-LastBootTime -ComputerName localhost
    .LIEN
    www.howtogeek.com
    #>

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

    Voyons maintenant notre nouveau fichier d'aide.

    Ahhh, fière allure! Maintenant que notre script est terminé, nous avons une dernière chose à faire: tester. Pour cela, je vais sortir de l'ISE et retourner dans la console PowerShell simplement pour que nous puissions nous assurer qu'il n'y a pas d'anomalies..

    Si vous commencez avec une simple doublure et que vous continuez à vous appuyer dessus, comme nous l'avons fait dans ce guide, vous comprendrez tout de suite. C'est tout pour cette fois, on se voit dans la prochaine installation de Geek School.