Question
[/Build] PS V5 Preview
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 1 semaine #18475
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[/Build] PS V5 Preview
Un truc en passant, l'ajout de la valeur
AtBreakpoint
dans la liste des états d'un job. Reste a savoir comment le gérer...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 7 heures #18531
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[/Build] PS V5 Preview
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Flavien
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 9 ans 10 mois #18774
par Flavien
Réponse de Flavien sur le sujet Re:[/Build] PS V5 Preview
Bonjour,
En attendant la prochaine preview qui se fait attendre, j'ai écrit un peu de code autour des classes Powershell.
Cela permet de voir ce qui est en construction sur les fonctions expérimentales.
github.com/flavops/Lexec.Type
PS : le code est expérimental et uniquement pour l'étude de Powershell, en aucun cas pour de la production.
En attendant la prochaine preview qui se fait attendre, j'ai écrit un peu de code autour des classes Powershell.
Cela permet de voir ce qui est en construction sur les fonctions expérimentales.
github.com/flavops/Lexec.Type
PS : le code est expérimental et uniquement pour l'étude de Powershell, en aucun cas pour de la production.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 9 ans 10 mois #18775
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[/Build] PS V5 Preview
Salut,
Flav écrit:
Au trouver le module Poke prérequis ?
Je n'ai pas pris le temps de consulter le code, de toute façon je n'ai pas de machine de test avec la v5
Flav écrit:
Justement j'ai un peu de mal à 'voir' l'objectif et les usages. Si tu as qq minutes pour nous les exprimer ce serait bien.Cela permet de voir ce qui est en construction sur les fonctions expérimentales.
Au trouver le module Poke prérequis ?
Je n'ai pas pris le temps de consulter le code, de toute façon je n'ai pas de machine de test avec la v5
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Flavien
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 9 ans 10 mois #18776
par Flavien
Réponse de Flavien sur le sujet Re:[/Build] PS V5 Preview
Le code effectue les choses suivantes :
- On récupère l'AST d'un scriptblock
- On se ballade dans l'AST et on génère une assembly dynamique contenant 2 classes DotNet, une contenant un wrapper vers l'autre qui contient du code dynamique.(cette technique est celle utilisé par le code de la dernière version 5.0)
- On pose optionnelement une dll partielle (qui ne contient pas le code Dynamique) sur le disque pour ceux qui veulent regarder
- On met un TypeAccelerator car les types ne sont pas en DeclaredTypes mais DefinedTypes.
Le code contient le moyen de décorer ses classes avec des attributes, qui ne cassent pas l'AST et sont récupérer par le code pour génerer une sorte de type selon le besoin
Ses fonctionnalités devraient être fournis par Powershell.
Sur le fond, c'est pour préparer le changement de paradigme function/cmdlet/module VS function/cmdlet/module/class/enum/interface/using/
Même si la team Powershell n'implémente pas tous les cas de figure, c'est la possibilité d'implémenter ces cas en attendant. Comme par exemple DynamicObject
Ce code n'est pas supportable dans le cadre d'un projet.
J'ai posé ce code pour toi Laurent. Pour tout l'énorme travail que tu as réalisé ici
[code:1]
# Add an CLR Interface
Add-Type -Language Csharp -TypeDefinition @'
public interface IFoo
{
void Foo();
}
'@
# Add an CLR Type MyNameSpace.Utils.ClassThatImplementsInterface with BaseType [Object] and Implements [IFoo]
Add-ClassType {
[MetaClassAttribute(NamespaceName='MyNameSpace.Utils',BaseType=[object],Interfaces=[IFoo])]
class ClassThatImplementsInterface {
[string] $Name
ClassThatImplementsInterface($Name) {
$this.Name = $Name
}
[string] GetName() {
return $this.Name
}
[void] Foo() {
Write-Host \"Foo()\"
}
}
}
$Toto = [MyNameSpace.Utils.ClassThatImplementsInterface]::new('toto')
$Toto -is [iFoo] # True
$Toto.Foo()
$Toto -is [object]
$Toto.GetName() # toto
[/code:1]
- On récupère l'AST d'un scriptblock
- On se ballade dans l'AST et on génère une assembly dynamique contenant 2 classes DotNet, une contenant un wrapper vers l'autre qui contient du code dynamique.(cette technique est celle utilisé par le code de la dernière version 5.0)
- On pose optionnelement une dll partielle (qui ne contient pas le code Dynamique) sur le disque pour ceux qui veulent regarder
- On met un TypeAccelerator car les types ne sont pas en DeclaredTypes mais DefinedTypes.
Le code contient le moyen de décorer ses classes avec des attributes, qui ne cassent pas l'AST et sont récupérer par le code pour génerer une sorte de type selon le besoin
Ses fonctionnalités devraient être fournis par Powershell.
Sur le fond, c'est pour préparer le changement de paradigme function/cmdlet/module VS function/cmdlet/module/class/enum/interface/using/
Même si la team Powershell n'implémente pas tous les cas de figure, c'est la possibilité d'implémenter ces cas en attendant. Comme par exemple DynamicObject
Ce code n'est pas supportable dans le cadre d'un projet.
J'ai posé ce code pour toi Laurent. Pour tout l'énorme travail que tu as réalisé ici
[code:1]
# Add an CLR Interface
Add-Type -Language Csharp -TypeDefinition @'
public interface IFoo
{
void Foo();
}
'@
# Add an CLR Type MyNameSpace.Utils.ClassThatImplementsInterface with BaseType [Object] and Implements [IFoo]
Add-ClassType {
[MetaClassAttribute(NamespaceName='MyNameSpace.Utils',BaseType=[object],Interfaces=[IFoo])]
class ClassThatImplementsInterface {
[string] $Name
ClassThatImplementsInterface($Name) {
$this.Name = $Name
}
[string] GetName() {
return $this.Name
}
[void] Foo() {
Write-Host \"Foo()\"
}
}
}
$Toto = [MyNameSpace.Utils.ClassThatImplementsInterface]::new('toto')
$Toto -is [iFoo] # True
$Toto.Foo()
$Toto -is [object]
$Toto.GetName() # toto
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 9 ans 10 mois #18777
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[/Build] PS V5 Preview
Flav écrit:
Merci, il me reste à monter une machine de test pour étudier ton code.J'ai posé ce code pour toi Laurent.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.130 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Discussions générales
- [/Build] PS V5 Preview