J'essaie d'ajouter des éléments à une variable Powershell avec Add-Member. Je n'ai aucun problème avec l'ajout de propriétés statiques NoteProperty, et les méthodes avec ScriptMethod, comme ça:Jeu de propriétés publiques VBscript/Get équivalent dans PowerShell
$variable = New-Object PSObject
$variable | Add-Member NoteProperty Key "Value"
$variable | Add-Member ScriptMethod DoSomething { // code }
Maintenant, je suis coincé sur ce point:
Je veux ajouter une propriété qui a un getter et un setter et fait un tas de choses via un bloc de code.
L'équivalent VBScript serait ceci:
Class MyClass
Public Property Get Item(name)
// Code to return the value of Item "name"
End Property
Public Property Let Item(name,value)
// Code to set the value of Item "name" to value "value"
End Property
End Class
Notez que les sections de code que je dois écrire faire plus que simplement définir/obtenir la valeur, ils sont plus complexes que (définir d'autres variables connexes, accéder aux données externes, etc ...).
J'ai échoué à trouver quelque chose d'aussi simple dans PowerShell et j'ai fini par ajouter à la place 2 scriptmethods, GetItem et SetItem. Quel serait le meilleur moyen d'implémenter cette fonctionnalité get/let dans un membre d'un objet PSObject dans PowerShell?
Merci à l'avance
Vous pouvez utiliser 'Add-Member' pour ajouter un' ParametrizedProperty', mais je n'ai pas réussi à trouver des exemples pour cela. La documentation est un peu rare à cet égard. – Joey
Oui, la propriété paramétrée semblait être celle que je voulais, mais elle est réservée à un autre usage, car chaque test effectué produisait le même message d'erreur indiquant qu'il était impossible pour Add-Member d'ajouter un membre de type ParameterizedProperty. Le message d'erreur indique que je devrais choisir un autre MemberTyper. – Baramin
Les propriétés paramétrées ne sont pas destinées à l'utilisateur final - elles sont principalement destinées à l'adaptateur COM. – x0n