Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
powershell_base3 [2019/02/25 21:31] – [Les cmdlets] nekanpowershell_base3 [2021/03/05 15:53] (Version actuelle) nekan
Ligne 1: Ligne 1:
 ====== Les bases de Powershell - 3ème partie ====== ====== Les bases de Powershell - 3ème partie ======
 +<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/24 22:24//
  
 On continue avec les bases du langage Powershell.  On continue avec les bases du langage Powershell. 
Ligne 14: Ligne 15:
 ^  Cmdlet  ^  Explication  ^  Référence  ^ ^  Cmdlet  ^  Explication  ^  Référence  ^
 |  Get-Member  |  Liste les éléments, propriétés et/ou méthodes d'un objet  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Get-Member?view=powershell-6|Microsoft]]  | |  Get-Member  |  Liste les éléments, propriétés et/ou méthodes d'un objet  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Get-Member?view=powershell-6|Microsoft]]  |
-|  Get-ChildItem  |  Liste les objets contenu dans un répertoire, l'équivalent de ''ls'' et de ''dir''  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Get-ChildItem?view=powershell-6|Microsoft]]  |+|  Get-ChildItem  |  Liste les objets contenu dans un répertoire, l'équivalent de ''ls -l'' et de ''dir''  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Get-ChildItem?view=powershell-6|Microsoft]]  |
 |  New-Item  |  Crée un nouveau fichier  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/New-Item?view=powershell-6|Microsoft]]  | |  New-Item  |  Crée un nouveau fichier  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/New-Item?view=powershell-6|Microsoft]]  |
 |  Export-Csv  |  Exporte des données vers un fichier CSV  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Export-Csv?view=powershell-6|Microsoft]]  | |  Export-Csv  |  Exporte des données vers un fichier CSV  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Export-Csv?view=powershell-6|Microsoft]]  |
Ligne 22: Ligne 23:
 |  Get-Date  |  Permet d'obtenir une date et/ou une heure  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Get-Date?view=powershell-6|Microsoft]]  | |  Get-Date  |  Permet d'obtenir une date et/ou une heure  |  [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Get-Date?view=powershell-6|Microsoft]]  |
 |  Get-Content  |  Permet d'obtenir le contenu d'un fichier  |  [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-6|Microsoft]]  |  Get-Content  |  Permet d'obtenir le contenu d'un fichier  |  [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-6|Microsoft]] 
 +|  Start-Sleep  |  Permet d'ajouter une temporisation dans un script  |  [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/start-sleep?view=powershell-6|Microsoft]] 
  
 ===== Les fonctions ===== ===== Les fonctions =====
Ligne 27: Ligne 29:
 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. 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.
  
-{{ :underconstruction-copy-300x150.jpg |}}+  * Référence [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions?view=powershell-6|Microsoft]]
  
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/24 17:24//+Exemple 1 : 
 +<sxh powershell># 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) 
 +</sxh> 
 + 
 +Exemple 2 : 
 +<sxh powershell># 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 sans paramètres grâce aux conditions positionnelles. 
 +Get-PCOnlineStatus "PC-DIR-1" 
 + 
 +# On pourra aussi appeler la fonction grâce à ses paramètres nommées. 
 +Get-PCOnlineStatus -PC "PC-DIR-1"</sxh> 
 + 
 +==== Les caractéristiques des paramètres ==== 
 + 
 +Il existe de nombreuses caractéristiques définissables pour un paramètre dans une fonction. Voici les principales : 
 + 
 +|< 100% 20% 50% 30% >| 
 + Caractéristiques  ^  Explication  ^  Exemple 
 +|  Mandatory  |  Désigne par $true ou $false si le paramètre est obligatoire dans l'appel de la fonction.  |  <sxh powershell>[Parameter(Mandatory=$true)]$PC</sxh> 
 +|  Position  |  Indique la position de l'argument quand le paramètre nommé n'est pas utilisé.  |  <sxh powershell>[Parameter(Position=0)]$PC</sxh> 
 +|  ValueFromPipeline  |  Indique par $true ou $false la capacité du paramètre à définir sa valeur depuis le pipeline.  |  <sxh powershell>[Parameter(ValueFromPipeline=$true)]$PC</sxh> 
 +|  HelpMessage  |  Couplé avec ''Mandatory=$true'', permet d'affiché un message d'aide quand aucune valeur n'est défini pour le paramètre et que la console en réclame une.  |  <sxh powershell>[Parameter(Mandatory=$true, 
 +HelpMessage="Entrez le nom d'un PC")]$PC</sxh> 
 +|  Alias  |  Permet de définir plusieurs noms valides pour un paramètre.  |  <sxh powershell>[Alias("ComputerName","WorkStation")]$PC</sxh> 
 +|  ValidatePattern  |  Permet de valider un argument si il correspond à l'expression régulière renseignée (voir [[powershell_regex|Les expressions régulières (regex)]]).  |  <sxh powershell>[ValidatePattern("[0-9][0-9][0-9][0-9]")]$Pin</sxh> 
 +|  ValidateSet  |  Permet de prédéfinir les valeurs possibles pour l'argument.  |  <sxh powershell>[ValidateSet("PC1", "PC2", "PC3")]$PC</sxh> 
 +|  Switch  |  Définie un paramètre dont les valeurs sont $true ou $false. Permet par exemple d'activité ou désactiver une fonctionnalité.  |  <sxh powershell>[Switch]$Verbose</sxh> 
 +|  Int  |  Indique un argument de type ''entier'' |  <sxh powershell>[Int]$Level</sxh> 
 +|  String  |  Indique un argument de type ''chaîne de caractères''  <sxh powershell>[String]$Name</sxh> 
 +|  Array  |  Indique un argument de type ''tableau'' |  <sxh powershell>[Array]$Table</sxh> 
 +|  []  |  Couplé avec un type d'argument, permet d'indiquer une ou plusieurs valeurs du type indiqué et séparées par des virgules '',''. Si plusieurs valeurs sont indiquées, l'argument sera de type ''liste'' et chaque élément de cette liste sera du type indiqué.  |  <sxh powershell>[String[]]$PC</sxh> 
 + 
 + 
 +===== Les fonctionnalités d'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. 
 + 
 +  * Référence : [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Core/Get-Help?view=powershell-6|Microsoft]] 
 + 
 +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. 
 + 
 +  * Référence : [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comment_based_help?view=powershell-6|Microsoft]] 
 + 
 +<sxh powershell><# 
 +.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.  
 + 
 +#></sxh>
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • powershell_base3.1551126664.txt.gz
  • Dernière modification : 2019/02/25 19:31
  • (modification externe)