Question Mise à jour en Powershell v3

Plus d'informations
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

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

Plus d'informations
il y a 9 ans 9 mois #17792 par Laurent Dardenne
kenobytes écrit:

Par contre, j'ai remplacé ma variable $Prenom par une valeur \&quot;toto\&quot; et là ça fonctionne.

Bonne nouvelle.
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 :silly:.
kenobytes écrit:

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 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# ).
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(\&quot;[ScriptVisitor] InvokeScript '{0}'\&quot;,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&lt;PSObject&gt; ResultInvoke = ExecutionContext.InvokeCommand.InvokeScript(
MyVisitorMethods.Code.ToString(),
false,
PipelineResultTypes.Error|
PipelineResultTypes.Warning|
PipelineResultTypes.Output,
// La présence de ces deux bits déclenchent -&gt; 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&lt;PSObject&gt; 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.069 secondes
Propulsé par Kunena