既に作成された powershell スクリプトを C# GUI クライアントでラップしようとしています。
スクリプトはユーザーからの入力に従って動作し、それらに応じて出力も行います。
PowerShell の出力を取得して C# クライアントに表示し、選択に従って入力を入力したいと考えています。
これは私のスクリプトであり、以下のコードは私が思いついたものですが、機能しません。(出力は最後にしか取得できず、PowerShell スクリプトに Read-Host がない場合にのみ取得できます)。それが何らかの形で役立つことを願っています。
Write-Host
Write-Host 'Hello World!'
Write-Host "Good-bye World! `n"
$option = Read-Host "Please enter your number"
switch ($option){
"1"
{
Write-Host "jack"
}
"2"
{
Write-Host "john"
}
"3"
{
Write-Host "joe"
}
}
public void WrapPowerShell()
{
string directory = Directory.GetCurrentDirectory();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"powershell.exe";
startInfo.Arguments = string.Format(@"& '{0}'", directory + @"\hello.ps1");
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = false;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
string output = process.StandardOutput.ReadToEnd();
// Assert.IsTrue(output.Contains("StringToBeVerifiedInAUnitTest"));
string errors = process.StandardError.ReadToEnd();
}
ご回答ありがとうございます。