Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
dev:powershell:parametres [2023/06/13 10:30] – créée yoann | dev:powershell:parametres [2023/08/27 19:50] (Version actuelle) – yoann | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
- | ====== PowerShell : Utiliser des paramètres ====== | + | ====== PowerShell : Utiliser des paramètres |
- | Pour plus de flexibilité, | + | Pour plus de flexibilité, |
- | On déclare les paramètres en début de script | + | On déclare les paramètres |
<code powershell> | <code powershell> | ||
+ | # Début de script aScript.ps1 | ||
Param ( | Param ( | ||
- | $aFirstParam, | + | $FirstParam, |
- | $aSecondParam, | + | $SecondParam, |
- | $aThirdParam | + | $ThirdParam |
) | ) | ||
</ | </ | ||
- | Param() | + | <code powershell> |
+ | function aFunctionName { | ||
+ | | ||
+ | $FirstParam, | ||
+ | $SecondParam, | ||
+ | $ThirdParam | ||
+ | | ||
+ | BEGIN{} | ||
+ | PROCESS{} | ||
+ | END{} | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Avec des paramètres déclarés ainsi, l' | ||
+ | |||
+ | <code powershell> | ||
+ | # Appel du script avec les paramètres nommés : | ||
+ | aScript.ps1 -FirstParam aValue1 -SecondParam aValue2 -ThirdParam aValue3 | ||
+ | |||
+ | # On appelle une fonction de la même manière | ||
+ | aFunctionName -FirstParam aValue1 -SecondParam aValue2 -ThirdParam aValue3 | ||
+ | </ | ||
+ | |||
+ | S'il n'y a pas de bloc **Param()** en début de script les données fournies au script à l’exécution sont tout de même accessible dans la variable **$args**. | ||
+ | |||
+ | |||
+ | Param() reçoit | ||
<code powershell> | <code powershell> | ||
Param ( | Param ( | ||
Ligne 22: | Ligne 50: | ||
) | ) | ||
</ | </ | ||
+ | |||
+ | Le type **Switch** permet de facilement tester si une option a été fournie lors de l' | ||
+ | |||
+ | <code powershell> | ||
+ | Param ( | ||
+ | [int] $TankID, | ||
+ | [float] $WaterLevel, | ||
+ | [Switch] $ResetCounters | ||
+ | ) | ||
+ | |||
+ | If ($ResetCounters -eq $True) | ||
+ | { | ||
+ | # L' | ||
+ | } | ||
+ | </ | ||
+ | |||
L' | L' | ||
Ligne 33: | Ligne 77: | ||
) | ) | ||
</ | </ | ||
+ | |||
+ | Pour ajouter de l'aide sur le paramètre, il existe l' | ||
+ | |||
+ | <code powershell> | ||
+ | Param( | ||
+ | | ||
+ | | ||
+ | [int] $TankID = 102 | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | On peut également introduire des tests de validation des paramètres. La validation peut s' | ||
+ | |||
+ | <code powershell> | ||
+ | Param( | ||
+ | [Parameter(Mandatory)] | ||
+ | [ValidateSet(" | ||
+ | [string[]]$Detail | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | ===== Utiliser les paramètres courants ===== | ||
+ | |||
+ | Les fonctions nommées peuvent hériter des paramètres courants comme **-Verbose** ou **-Debug**. Pour une informations exhaustive confère [[https:// | ||
+ | |||
+ | Dans l' | ||
+ | <code powershell> | ||
+ | function aFonctionName { | ||
+ | Param( | ||
+ | # Nécessaire pour lier les paramètres courants | ||
+ | [CmdletBinding()] | ||
+ | ) | ||
+ | |||
+ | # Affiche un message avec la valeur de l' | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | <code powershell> | ||
+ | aFonctionName | ||
+ | $Verbose = False | ||
+ | |||
+ | aFonctionName -Verbose | ||
+ | $Verbose = True | ||
+ | |||
+ | aFonctionName -Verbose: | ||
+ | $Verbose = False | ||
+ | |||
+ | aFonctionName | ||
+ | $Verbose = True | ||
+ | </ | ||
+ | |||
+ | |||
+ | Les variables '' | ||
+ | |||
+ | <code powershell> | ||
+ | # Tester la présence du paramètre courant Verbose | ||
+ | $PSCmdlet.MyInvocation.BoundParameters[" | ||
+ | $PSCmdlet.MyInvocation.BoundParameters.ContainsKey(' | ||
+ | |||
+ | $PSBoundParameters[" | ||
+ | $PSBoundParameters.ContainsKey(' | ||
+ | |||
+ | |||
+ | # Accéder à la valeur du paramètre courant Verbose | ||
+ | $PSCmdlet.MyInvocation.BoundParameters[' | ||
+ | $PSBoundParameters[' | ||
+ | $PSBoundParameters.Item(' | ||
+ | $PSBoundParameters.verbose | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Références ===== | ||
+ | |||
+ | * https:// | ||
+ | * https:// |