Question Mise à jour en Powershell v3
- gege
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 9 ans 9 mois #17791
par gege
Réponse de gege sur le sujet Re:Mise à jour en Powershell v3
Bon je pense avoir trouvé la réponse, en ajoutant $Global:Prenom ma variable est bien reporté en dehors de mon bouton.
[code:1]
[String]$Global:«»Prenom
[/code:1]
Donc c'est une nouveauté de la version 3 de devoir définir une variable global pour l'utiliser en dehors d'une méthode?<br><br>Message édité par: kenobytes, à: 4/07/14 13:53
[code:1]
[String]$Global:«»Prenom
[/code:1]
Donc c'est une nouveauté de la version 3 de devoir définir une variable global pour l'utiliser en dehors d'une méthode?<br><br>Message édité par: kenobytes, à: 4/07/14 13:53
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 9 ans 9 mois #17792
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Mise à jour en Powershell v3
kenobytes écrit:
Cela m'a effleuré l'esprit, mais au vu de ton code cela n'avait pas de sens. Surtout que le message d'erreur n'a rien à voir .
kenobytes écrit:
Je vais vérifier si c'est bien le cas avec un exemple simple.
J'ai rencontré un soucis similaire lors de la rédaction du tuto sur l'AST .
Bon, c'est de la plomberie mais la constatation est identique :
[code:1]
if (MyVisitorMethods.Code != null)
{
if (isDebug)
ExecutionContext.Host.UI.WriteDebugLine(string.Format(\"[ScriptVisitor] InvokeScript '{0}'\",Key));
try {
//Mémorise le résultat
// 1)
//La collection $Error est renseignée, les erreurs sont émisent sur la console.
//Les flux Debug,verbose et Warning fonctionnent. Les variables de préférence aussi.
//La variable automatique PSCmdlet est renseignée.
//MAIS pb de portée :/
/* Collection<PSObject> ResultInvoke = ExecutionContext.InvokeCommand.InvokeScript(
MyVisitorMethods.Code.ToString(),
false,
PipelineResultTypes.Error|
PipelineResultTypes.Warning|
PipelineResultTypes.Output,
// La présence de ces deux bits déclenchent -> NewNotImplementedException
//PipelineResultTypes.Debug,
// PipelineResultTypes.Verbose,
null,
new[] {ast});
*/
// 2)
//La collection $Error est renseignée, mais n'émet pas les erreurs sur la console.
//Les flux Debug,verbose et Warning fonctionnent. Les variables de préférence aussi.
//La variable automatique PSCmdlet n'est pas renseignée ( elle est à $null).
//Pas de pb de portée
Collection<PSObject> ResultInvoke = MyVisitorMethods.Code.Invoke(ast);
[/code:1]
Ceci dit dans mon cas, j'ai un doute sur la pertinence de mon approche...
Bonne nouvelle.Par contre, j'ai remplacé ma variable $Prenom par une valeur \"toto\" et là ça fonctionne.
Cela m'a effleuré l'esprit, mais au vu de ton code cela n'avait pas de sens. Surtout que le message d'erreur n'a rien à voir .
kenobytes écrit:
Je ne sais pas/plus. Ici tu définis un délégué ( code PS ) en le passant en paramètre d'une méthode d'un composant 'Winform' ( C# ).Donc c'est une nouveauté de la version 3 de devoir définir une variable global pour l'utiliser en dehors d'une méthode?
Je vais vérifier si c'est bien le cas avec un exemple simple.
J'ai rencontré un soucis similaire lors de la rédaction du tuto sur l'AST .
Bon, c'est de la plomberie mais la constatation est identique :
[code:1]
if (MyVisitorMethods.Code != null)
{
if (isDebug)
ExecutionContext.Host.UI.WriteDebugLine(string.Format(\"[ScriptVisitor] InvokeScript '{0}'\",Key));
try {
//Mémorise le résultat
// 1)
//La collection $Error est renseignée, les erreurs sont émisent sur la console.
//Les flux Debug,verbose et Warning fonctionnent. Les variables de préférence aussi.
//La variable automatique PSCmdlet est renseignée.
//MAIS pb de portée :/
/* Collection<PSObject> ResultInvoke = ExecutionContext.InvokeCommand.InvokeScript(
MyVisitorMethods.Code.ToString(),
false,
PipelineResultTypes.Error|
PipelineResultTypes.Warning|
PipelineResultTypes.Output,
// La présence de ces deux bits déclenchent -> NewNotImplementedException
//PipelineResultTypes.Debug,
// PipelineResultTypes.Verbose,
null,
new[] {ast});
*/
// 2)
//La collection $Error est renseignée, mais n'émet pas les erreurs sur la console.
//Les flux Debug,verbose et Warning fonctionnent. Les variables de préférence aussi.
//La variable automatique PSCmdlet n'est pas renseignée ( elle est à $null).
//Pas de pb de portée
Collection<PSObject> ResultInvoke = MyVisitorMethods.Code.Invoke(ast);
[/code:1]
Ceci dit dans mon cas, j'ai un doute sur la pertinence de mon approche...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.066 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Mise à jour en Powershell v3