【发布时间】:2021-01-02 08:28:53
【问题描述】:
我正在使用 .NET Core 通过 Powershell 编写一些自动化程序, 我安装了以下 nugets:
Microsoft.PowerShell.Commands.Management
Microsoft.PowerShell.SDK
Microsoft.WSMan.Management
System.Management.Automation
并且正在使用以下代码:
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript("$service = Get-CimInstance -ClassName Win32_Service -Filter \"name = 'MyNewService\'\"");
pipeline.Commands.AddScript("$service.DisplayName");
得到以下错误
System.Management.Automation.CommandNotFoundException:“‘Get-CimInstance’一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。'
任何想法如何解决这个问题,所以它会识别命令?
【问题讨论】:
-
可能没有安装或加载带有该命令的模块。你能手动运行 cmdlt 吗?
-
CIM 是在 PowerShell 版本 3 中引入的。也许您还在使用版本 2?
-
@Theo 我使用的是版本 6。
-
您的
System.Management.Automation版本是什么? -
Import-Module CIMCmdlets?从命令行运行,我理所当然地认为标准的东西在 psmodulepath 中。也许这不是您在创建自己的运行空间时免费获得的东西。