如何解决Powershell命令在dotNet 3.1.401
我正在尝试从通过powershell SDK创建的实例执行powershell命令,但是显然不是所有命令都可以执行,这可能是我的错误,但是只有一些命令返回了一个值,如文档所述,这是我的代码:
class ShellModel
{
private Runspace runspace;
private PowerShell invoker;
public ShellModel()
{
}
public void executeCmd(string cmd)
{
using (runspace = RunspaceFactory.CreateRunspace())
{
runspace.open();
using (invoker = PowerShell.Create())
{
invoker.Runspace = runspace;
invoker.Commands.AddScript("Get-WmiObject win32_service"/*+ " | Out-String"*/);
var requestInvoker = invoker.Invoke("Set-ExecutionPolicy Unrestricted");
System.Console.WriteLine(requestInvoker.Count);
foreach (var request in requestInvoker)
{
System.Console.Write("---> ");
System.Console.WriteLine(request);
}
}
runspace.Close();
}
}
}
应该注意,我正在使用这些库,并且以相同的方式安装了Microsoft建议的netcore依赖项
using System.Management.Automation.Runspaces;
using System.Management.Automation;
包装
<packagereference Include="Microsoft.Management.Infrastructure.CimCmdlets" Version="7.0.3" />
<packagereference Include="Microsoft.PowerShell.SDK" Version="7.0.3" />
“错误”被包裹在其中,如果我执行某些powershell命令,我会有一个响应,例如“ Get-Host”,但是当尝试执行另一个命令,例如“ Get-WmiObject win32_service”时,我没有得到响应而且我什至不知道命令是否成功执行,并且验证当尝试通过响应对象“ requestInvoker”并使用“ count”方法时,这些发现为空,并且在执行某些命令时也会发生例如“ Get-Host”,它将返回一个对象,而我无法通过当前存在的每个循环使用它,并且只能通过将“ | Out-String”直接连接到powershell命令的情况来显示结果不需要“ Get-Command”。
我尝试了其他方法来执行命令,在相同的情况下,我无法使其执行,甚至出现异常,该命令无法识别,这对我来说没有意义,也许我在使用它们的方式上是错误的,但是在所有方面,例外都是相同的。
这是一些命令对我起作用的方式:
invoker.Commands.AddScript("Get-WmiObject win32_service"/*+ " | Out-String"*/);
这是它无法识别命令并引发异常的其他方式
//Way 1
invoker.Commands.AddCommand("Get-WmiObject").AddArgument("win32_service");
//Way 2
invoker.Commands.AddCommand("Get-WmiObject").AddParameter("win32_service");
//Way 3
invoker.Commands.AddCommand("Get-WmiObject").AddParameter("-Class ").AddArgument("win32_service");
例外
System.Management.Automation.CommandNotFoundException: 'The term 'Get-WmiObject' is not recognized as the name of a cmdlet,function,script file,or operable program.
Check the spelling of the name,or if a path was included,verify that the path is correct and try again.'
我将不胜感激能正确执行命令的任何帮助或想法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。