我試圖用C#GUI客戶端包裝已經制作的PowerShell腳本。從C#包裝powershell腳本#
腳本根據來自用戶的輸入行爲,並且它也根據它們輸出。
我想獲得powershell輸出,將它們顯示給我的C#客戶端,然後根據他的選擇輸入輸入。
這是我的腳本,下面的代碼是我想到的,但它不起作用。 (我只能得到最後的輸出,並且只有在我的PowerShell腳本中沒有讀主機時)。希望它有助於某些方面。
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();
}
非常感謝您的回答!
我還沒有試過你的代碼,只是試着給出Powershell.exe完全顯式路徑,例如'C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe'(在64位系統上) –