Question [résolut]fonction avec parametre dynamiques

Plus d'informations
il y a 9 ans 1 mois #23482 par Marc
Bonjour a tous.

je ne comprend pas comment fonctionnent les paramètres dynamiques.

Voici mon exemple:

[code:1]
function coucou
{
[CmdletBinding()]
param
(
[parameter(Mandatory=$false)]
[switch]$go
)

DynamicParam
{
if ($go)
{
$dynparam = New-Object System.Management.Automation.RuntimeDefinedParameter('text',[string])
return $dynparam
}
}

if($go)
{
Write-Host $text
}
else
{
Write-Host 'pas coucou'
}
}
[/code:1]

J'étais confiant jusqu'à ce que powershell me réponde ça :

[code:1]
Au caractère Ligne:2 : 1
+ {
+ ~
Accolade fermante « } » manquante dans le bloc d’instruction.
Au caractère Ligne:27 : 1
+ }
+ ~
Jeton inattendu « } » dans l’expression ou l’instruction.
+ CategoryInfo : ParserError: (:«») [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace

[/code:1]

Je sèche si quelqu'un peut m'indiquer comment cela fonctionne, je lui serais très reconnaissant.
Merci.<br><br>Message édité par: marcci, à: 20/04/17 12:49

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23483 par xyz
Réponse de xyz sur le sujet Re:fonction avec parametre dynamiques
Salut,
tu trouveras un exemple documenté dans ce tutoriel .

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23484 par xyz
Réponse de xyz sur le sujet Re:fonction avec parametre dynamiques
Ou ici .

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 1 mois #23485 par Marc
Réponse de Marc sur le sujet Re:fonction avec parametre dynamiques
Merci Laurent,
suite à cette lecture tout devient plus clair.

[code:1]
function coucou
{
[CmdletBinding()]
param
(
[parameter(Mandatory=$false)]
[switch]$go
)

DynamicParam
{
if ($go)
{
$attribut = New-Object System.Management.Automation.ParameterAttribute
$attribut.Mandatory = $true
$attribut.Position = 2
$attributCollection = New-Object 'System.Collections.ObjectModel.Collection[System.Attribute]'
$attributCollection.Add($attribut)
$dynparam = New-Object System.Management.Automation.RuntimeDefinedParameter('text',[string],$attributCollection)
$paramDictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
$paramDictionary.Add(\&quot;text\&quot;, $dynparam)
return $paramDictionary
}
}

begin
{
if($go)
{
Write-Host $PSBoundParameters.text
}
else
{
Write-Host 'pas coucou'
}
}
}
[/code:1]

C'est mieux, je vais pouvoir avancer.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.037 secondes
Propulsé par Kunena