PowerShell
Paramètres dynamiques PowerShell
Recherche…
Paramètre dynamique "simple"
Cet exemple ajoute un nouveau paramètre à MyTestFunction si $SomeUsefulNumber
est supérieur à 5.
function MyTestFunction
{
[CmdletBinding(DefaultParameterSetName='DefaultConfiguration')]
Param
(
[Parameter(Mandatory=$true)][int]$SomeUsefulNumber
)
DynamicParam
{
$paramDictionary = New-Object -Type System.Management.Automation.RuntimeDefinedParameterDictionary
$attributes = New-Object System.Management.Automation.ParameterAttribute
$attributes.ParameterSetName = "__AllParameterSets"
$attributes.Mandatory = $true
$attributeCollection = New-Object -Type System.Collections.ObjectModel.Collection[System.Attribute]
$attributeCollection.Add($attributes)
# If "SomeUsefulNumber" is greater than 5, then add the "MandatoryParam1" parameter
if($SomeUsefulNumber -gt 5)
{
# Create a mandatory string parameter called "MandatoryParam1"
$dynParam1 = New-Object -Type System.Management.Automation.RuntimeDefinedParameter("MandatoryParam1", [String], $attributeCollection)
# Add the new parameter to the dictionary
$paramDictionary.Add("MandatoryParam1", $dynParam1)
}
return $paramDictionary
}
process
{
Write-Host "SomeUsefulNumber = $SomeUsefulNumber"
# Notice that dynamic parameters need a specific syntax
Write-Host ("MandatoryParam1 = {0}" -f $PSBoundParameters.MandatoryParam1)
}
}
Usage:
PS > MyTestFunction -SomeUsefulNumber 3
SomeUsefulNumber = 3
MandatoryParam1 =
PS > MyTestFunction -SomeUsefulNumber 6
cmdlet MyTestFunction at command pipeline position 1
Supply values for the following parameters:
MandatoryParam1:
PS >MyTestFunction -SomeUsefulNumber 6 -MandatoryParam1 test
SomeUsefulNumber = 6
MandatoryParam1 = test
Dans le deuxième exemple d'utilisation, vous pouvez voir clairement qu'un paramètre est manquant.
Les paramètres dynamiques sont également pris en compte lors de l'achèvement automatique.
Voici ce qui se passe si vous appuyez sur ctrl + espace à la fin de la ligne:
PS >MyTestFunction -SomeUsefulNumber 3 -<ctrl+space>
Verbose WarningAction WarningVariable OutBuffer
Debug InformationAction InformationVariable PipelineVariable
ErrorAction ErrorVariable OutVariable
PS >MyTestFunction -SomeUsefulNumber 6 -<ctrl+space>
MandatoryParam1 ErrorAction ErrorVariable OutVariable
Verbose WarningAction WarningVariable OutBuffer
Debug InformationAction InformationVariable PipelineVariable
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow