[英]Running Powershell in C# and Powershell is behaving differently
该图显示了在 C# 和 Powershell ISE 中执行的相同 powershell 命令。 我的问题是,Powershell 显示了进程和进程目录的完整列表,但是在 C# 中执行的代码的结果不包含像 svchost.exe 这样的 windows 进程。
当然,我的 C# 表格和 Powershell ISE 都以管理员身份运行。 此外,我确保对我的表单进行编码以使用管理权限启动。 再次确定,我通过右键单击执行了我的 C# - 以管理员身份运行(我也对 Powershell ISE 执行了此操作)
命令/秒:Powershell 和 C#
get-process | get-item -erroraction silentlycontinue | format-table name, directory
get-process | format-table name, directory
尽管此特定命令显示了所有过程:
get-process
不幸的是,将它与上面的语法结合起来会显示与 C# 不同的 output。
private string RunScript(string script)
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(script);
pipeline.Commands.Add("Out-String");
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject pSObject in results)
stringBuilder.AppendLine(pSObject.ToString());
return stringBuilder.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
output.Clear();
output.Text = RunFilePs1(input.Text);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.