Ceci est une ancienne révision du document !
Les bases de Powershell - 3ème partie
On continue avec les bases du langage Powershell.
Les cmdlets
Les cmdlets sont les différentes commandes que Powershell peut exécuter. Elles sont généralement composer d'un verbe qualifiant l'action de la cmdlet et d'un nom qualifiant son champ d'activité. Du coup, comprendre l'utilité d'une cmdlet ou tous simplement, trouver une cmdlet qui répond à nos besoins est assez facile. Par exemple, la cmdlet Set-ExecutionPolicy a pour verbe Set qui signifie paramétrer et ExecutionPolicy pour nom, ce qui signifie politique d'exécution. On peut en conclure que cette cmdlet est utiliser pour changer la politique d'exécution de Powershell.
Voici quelques cmdlets utiles :
| Cmdlet | Explication | Référence |
|---|---|---|
| Get-Member | Liste les éléments, propriétés et/ou méthodes d'un objet | Microsoft |
| Get-ChildItem | Liste les objets contenu dans un répertoire, l'équivalent de ls et de dir | Microsoft |
| New-Item | Crée un nouveau fichier | Microsoft |
| Export-Csv | Exporte des données vers un fichier CSV | Microsoft |
| Get-WmiObject | Interroge les classes WMI pour en collecter les informations | Microsoft |
| Write-Host | Affiche des informations dans la console | Microsoft |
| Get-Help | Fournit l'aide associé à un objet | Microsoft |
| Get-Date | Permet d'obtenir une date et/ou une heure | Microsoft |
| Get-Content | Permet d'obtenir le contenu d'un fichier | Microsoft |
Les fonctions
Les fonctions sont des cmdlets personnelles et personnalisables. Elles sont utiles afin d'éviter de répéter certains codes ou tout simplement pour améliorer la lisibilité d'un script. Elles sont déclarées par la commande Function et peuvent accepter des arguments, soit en les déclarant après le nom de la fonction entre parenthèses ($Arg1,$Arg2), soit dans la section param au début du code de la fonction.
Exemple 1 :
# On déclare la fonction avec son nom et la variable qui correspond à son argument
Function Get-PCOnlineStatus($PC)
{
# On crée une variable contenant le test de connexion sur le poste représenté par la variable $PC donné en argument
$OnlineTest = (Test-Connection -ComputerName $PC -Count 1)
# On vérifie le résultat
If ($OnlineTest)
{
# Le test est réussi, le poste est en ligne. On stocke le résultat du test dans une variable.
$Test = $True
}
Else
{
# Le test est raté, le poste est hors ligne. On stocke le résultat du test dans une variable.
$Test = $False
}
# On utilise la commande Return pour renvoyer le résultat en dehors de la fonction.
Return $Test
}
# Plus tard dans le code, on peut appeler la fonction.
Get-PCOnlineStatus(PC-COMPTA-1)
Exemple 2 :
# On déclare la fonction avec son nom sans variable
Function Get-PCOnlineStatus()
{
# On déclare les paramètre nécessaire pour la fonction
Param
(
# Les informations entre crochets [] sont optionnel.
# Le premier indique la position de l'argument, surtout utile quand il y en a plusieurs.
# Le second indique le type de variable.
[parameter(position=0)][String]$PC
)
# On crée une variable contenant le test de connexion sur le poste représenté par la variable $PC donné en argument
$OnlineTest = (Test-Connection -ComputerName $PC -Count 1)
# On vérifie le résultat
If ($OnlineTest)
{
# Le test est réussi, le poste est en ligne. On stocke le résultat du test dans une variable.
$Test = $True
}
Else
{
# Le test est raté, le poste est hors ligne. On stocke le résultat du test dans une variable.
$Test = $False
}
# On utilise la commande Return pour renvoyer le résultat en dehors de la fonction.
Return $Test
}
# Plus tard dans le code, on peut appeler la fonction.
Get-PCOnlineStatus "PC-DIR-1"
Aide
Fournir de l'aide est très important. Les aides vous permettent d'utiliser correctement les commandes et modules natifs de Powershell ainsi que ceux fournis par de tiers personnes. De même, je vous recommande d'ajouter une aide à vos propres scripts, ce qui vous permettra de vous relire plus facilement quand vous reprendrez un vieux script ou tout simplement pour que quiconque utilise votre script sache de quoi il s'agit.
A cet effet, Powershell fournit la cmdlet Get-Help, qui permet d'obtenir l'aide de n'importe quels autres cmdlets ou modules.
Cette cmdlet peut aussi afficher l'aide de vos propres scripts pour peu que vous commenciez ces derniers avec la structure nécessaire. Cette structure se présente comme un bloc de commentaire qui, je le rappelle, doit se trouver au tout début du script.
<#
.SYNOPSIS
Ce que vous écrivez ici représente une courte description de votre script
.DESCRIPTION
Ce que vous écrivez ici représente une description plus complète
.PARAMETER ComputerName
Ici, on décrit le paramètre du script que l'on a nous même nommé ComputerName
.PARAMETER User
Ici, on fait la même chose avec le paramètre User. On pourra ajouter autant de ligne .PARAMETER qu'il y a de paramètre dans le script.
Bien entendu, s'il n'y a pas de paramètre dans votre script, pas besoin de mettre ces lignes.
.EXAMPLE
Ici, on pourra mettre des exemples d'utilisation du script avec une légère explication de l'exemple.
Bien sûr, on peut mettre autant de ligne .EXAMPLE que l'on veut.
MonScript.ps1 -ComputerName PC-EXPLOIT-1 -User Tech1 <- Ceci est l'exemple
Vérifie si le profil Tech1 existe sur le poste PC-EXPLOIT-1 <- Ceci est l'explication
.INPUTS
On décrit ici les objets en provenance du pipe qui sont accepter par le script. Ceci est optionnel.
.OUTPUTS
On décrit ici le type d'objet renvoyé dans le pipe par le script. Ceci est optionnel.
.NOTES
Ici, on pourra écrire n'importe quelle information complémentaire. Personnellement, j'utilise cette
section pour les notes de version de mes scripts.
Il existe d'autres sections optionnelles que vous pourrez retrouver dans le lien de référence.
#>
— Nicolas THOREZ 2019/02/24 17:24
Discussion