Bonjour,

Je cherche à executer un script Powershell depuis mon application. Si je le fais en utilisant la classe PowerShell, en faisant un AddScript pour ajouter mon script puis un Invoke, tout se déroule correctement. Cependant cela ouvre une fenetre powershell en arrière plan.

J'ai donc trouvé sur internet une solution qui consiste à utiliser la classe ProcessStartInfo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = "powershell.exe",        // Utiliser PowerShell pour exécuter le script
    Arguments = arguments,             // Passer les arguments de la commande
    CreateNoWindow = true,             // Ne pas créer de fenêtre PowerShell
    UseShellExecute = false,           // Ne pas utiliser l'interface utilisateur du shell
    RedirectStandardOutput = true,     // Rediriger la sortie du script vers l'application
    RedirectStandardError = true      // Rediriger les erreurs aussi
};
Avec dans arguments mon script. Mais quand je fais ainsi, j'ai une erreur sur les lignes ou apparait la variable $env. Par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
FilePath = $env:SystemRoot\Temp\MAS_$rand.cmd;
L'erreur est la suivante : La référence à la variable n'est pas valide. $ n'est pas suivi d'un caractère de nom de variable valide. Envisagez d'utiliser ${} pour délimiter le nom.

Est-ce qu'il y a quelque chose de spécial à faire dans le cas ou on ne passe pas par la classe PowerShell ?

Merci d'avance pour votre aide.