Question Comment créer un type Enum dynamiquement ?
- Arnaud Petitjean
-
Auteur du sujet
- Hors Ligne
- Modérateur
-
il y a 2 ans 3 mois #30954
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?
Réponse de Arnaud Petitjean sur le sujet Comment créer un type Enum dynamiquement ?
Oui ça demande à faire quelques tests...
Que veux tu dire exactement par "portée de la classe" ?
Que veux tu dire exactement par "portée de la classe" ?
Oui, using est assez pénible pour ça. Malheureusement on cela ne peut en être autrement....chemin en dur dans la clause using
MVP PowerShell et créateur de ce magnifique forum

Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 2 ans 3 mois #30955
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Comment créer un type Enum dynamiquement ?
Et pour l'usage de ta fonction New-Enum sous PS Core, il faut adapter le code C#.
Une piste : stackoverflow.com/questions/36937276/rep...assembly-in-net-core
Une piste : stackoverflow.com/questions/36937276/rep...assembly-in-net-core
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Thomas PEREZ
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 1
il y a 2 ans 3 mois #30956
par Thomas PEREZ
Réponse de Thomas PEREZ sur le sujet Comment créer un type Enum dynamiquement ?
Normalement, le using doit être en premier ligne d'un script.
Dans mon exemple, il se trouve n'importe où dans le code et n'est pas obligatoirement en dur.
Il peut très bien comporter une variable.
Exemple :
Dans mon exemple, il se trouve n'importe où dans le code et n'est pas obligatoirement en dur.
Il peut très bien comporter une variable.
Exemple :
# Import d'une class dynamiquement.
$classModules = "using module $monChemin"
$scriptBlock = [ScriptBlock]::Create($classModules)
. $scriptBlock
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 2 ans 3 mois #30957
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Comment créer un type Enum dynamiquement ?
>>Que veux tu dire exactement par "portée de la classe" ?
Une fois la classe créé via l'exécution du script on a ceci :La classe existe :Il faut créer dans le module une fonction (un wrapper) de création d'instance, enfin si besoin.
Comme on ne connait pas le contexte de ton utilisation, la solution peut variée.
Si c'est un traitement en une passe, pas de pb en l'état, si c'est un outil pour admin (console) faut ajouter des trucs
Pour la clause using je ne sais plus si elle s'appuie sur PSModulePath ou si elle nécessite tout le temps un chemin codé en dur...
Une fois la classe créé via l'exécution du script on a ceci :
>> $test = [MyClass]@{MyEnum = 'Wsus'
>> }
>> '@ > c:\temp\main.ps1
C:\temp> .\main.ps1
C:\temp> [MyClass]
Type [MyClass] introuvable.
C:\temp> $m= get-module Myclass
C:\temp> &$m { [MyClass] }
Comme on ne connait pas le contexte de ton utilisation, la solution peut variée.
Si c'est un traitement en une passe, pas de pb en l'état, si c'est un outil pour admin (console) faut ajouter des trucs

Pour la clause using je ne sais plus si elle s'appuie sur PSModulePath ou si elle nécessite tout le temps un chemin codé en dur...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 2 ans 3 mois - il y a 2 ans 3 mois #30958
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Comment créer un type Enum dynamiquement ?
Thomas je n'avais pas vu ton message.
>>Il peut très bien comporter une variable.
Oui tout à fait.
Si tous les fichiers sont dans le même répertoire $PsScriptRoot peut suffire.
>>Il peut très bien comporter une variable.
Oui tout à fait.
Si tous les fichiers sont dans le même répertoire $PsScriptRoot peut suffire.
Tutoriels PowerShell
Dernière édition: il y a 2 ans 3 mois par Laurent Dardenne.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 2 ans 3 mois #30959
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Comment créer un type Enum dynamiquement ?
Sinon en passant, sous PS v7 il existe cette possibilité :
vexx32.github.io/2018/11/29/Dynamic-ValidateSet/
vexx32.github.io/2018/11/29/Dynamic-ValidateSet/
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.073 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Comment créer un type Enum dynamiquement ?