我正在尝试在 c# 中运行一个 powershell 脚本,其中包含以下命令:Get-Credential
我可以使用 Process Command 运行该文件:
public static void RunFile(string ps1File)
{
var startInfo = new ProcessStartInfo()
{
FileName = "powershell.exe",
Arguments = $"-NoProfile -ExecutionPolicy unrestricted -file \"{ps1File}\"",
UseShellExecute = false,
CreateNoWindow = true
};
try
{
Process P = Process.Start(startInfo);
P.WaitForExit();
var result = P.ExitCode;
System.Diagnostics.Debug.WriteLine("Error: " + result);
}
catch (Exception e)
{
throw;
}
}
但是我没有得到 PS 返回值。所以我正在尝试 System.Management.Automation 但现在我遇到了 PS 窗口没有出现的问题,我得到了直接的错误代码:
public async static void RunFileTest(string ps1File) {
PowerShell ps = PowerShell.Create();
//PowerShell ps = PowerShell.Create();
if (File.Exists(ps1File)) {
ScriptBlock sb = ScriptBlock.Create(System.IO.File.ReadAllText(ps1File));
System.Diagnostics.Debug.WriteLine("SB: " + sb.ToString());
// execute the script and await the result.
//var results = await ps.InvokeAsync().ConfigureAwait(false);
//var results = ps.Invoke();
PSCommand new1 = new PSCommand();
ps.Commands = new1;
var results = ps.Invoke();
foreach (var result in results)
{
Console.WriteLine(result); //<-- result NOT results
System.Diagnostics.Debug.WriteLine("Error: " + result.ToString());
}
System.Diagnostics.Debug.WriteLine("Errors: " + results);
} else
{
System.Diagnostics.Debug.WriteLine("Error: " + "No File");
}
}
有没有办法运行 PS 文件并从 get-credential 获取窗口但没有 PowerShell 窗口?
谢谢斯蒂芬
编辑:看来,当我使用第一个函数 RunFile 时,我必须使用 exit 而不是 return 来设置正确的退出代码,但是无论如何,最好使用内置 powershell 函数