C# を使用して、実行空間でパラメーターを使用して Powershell ファイルを実行しようとしています。残念ながら、次の出力が得られます。
ホスト プログラムまたはコマンド タイプがユーザー対話をサポートしていないため、ユーザーにプロンプトを表示するコマンドが失敗しました。Windows PowerShell コンソールや Windows PowerShell ISE などのユーザー操作をサポートするホスト プログラムを試し、Windows PowerShell ワークフローなどのユーザー操作をサポートしないコマンド タイプからプロンプト関連のコマンドを削除します。
どうすればいいですか?
現在の c# コード。これは、PS ファイルにあるコマンドを実行する必要があり、json 文字列を返す必要があります。
public string ExecuteCommandDirect(int psId, string psMaster, string psFile)
{
String FullPsFilePath = @"C:\CloudPS\" + psFile + ".ps1";
String PsParameters = FullPsFilePath + " -psId " + psId + " -psMaster " + psMaster + " -NonInteractive";
// Create Powershell Runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
// Create pipeline and add commands
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(PsParameters);
// Execute Script
Collection<PSObject> results = new Collection<PSObject>();
try
{
results = pipeline.Invoke();
}
catch (Exception ex)
{
results.Add(new PSObject((object)ex.Message));
}
// Close runspace
runspace.Close();
//Script results to string
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
Debug.WriteLine(obj);
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString();
}
PS コード:
param([int]$psId = 0, [string]$psMaster = 'localhost');
$date = Get-Date -Format 'h:m:s' | ConvertTo-Json;
Write-Host $date;
exit;