Vous trouverez ci-dessous le script que j'utilise pour essayer d'exécuter mon script PowerShell, mais chaque fois que je l'exécute, une fenêtre de commande vide s'affiche.
static void Main(string[] args)
{
string text = System.IO.File.ReadAllText(@"C:\Program Files (x86)\Backup Reporter\Required\edit_website.ps1");
using (PowerShell PowerShellInstance = PowerShell.Create())
{
// use "AddScript" to add the contents of a script file to the end of the execution pipeline.
// use "AddCommand" to add individual commands/cmdlets to the end of the execution pipeline.
PowerShellInstance.AddScript(text);
Collection<PSObject> PSOutput = PowerShellInstance.Invoke();
foreach (PSObject outputItem in PSOutput)
{
// if null object was dumped to the pipeline during the script then a null
// object may be present here. check for null to prevent potential NRE.
if (outputItem != null)
{
Console.WriteLine(outputItem.BaseObject.ToString() + "\n");
}
}
if (PowerShellInstance.Streams.Error.Count > 0)
{
Console.Write("Error");
}
Console.ReadKey();
}
}
$text = "test test test"
Tout ce que je veux faire, c'est envoyer le test à la fenêtre de commande.
Vous pouvez utiliser Write-Output au lieu de Write-Host. Cela fonctionne pour moi tout en appelant à partir de l'application Winform.
Votre code semble être correct, cependant votre script ne donne aucune sortie. C'est pourquoi vous ne voyez pas la sortie du script. Ajouter:
Write-Host $text
Cela vous donnera une sortie imprimée à la ligne:
Console.WriteLine(outputItem.BaseObject.ToString() + "\n");
Votre script ne donne aucune sortie.Vous pouvez utiliser la commande write-output de votre script pour obtenir une sortie. [As kpundir refer]
Write-Output $text