我需要获取有关系统的信息。我可以使用 Powershell 从 Get-WmiObject 获取它。但我需要使用 .NET 核心应用程序来收集它。
我能够执行一些基本命令,例如 Get-Command 或 Get-Process。
当我尝试执行 Get-WmiObject 时,出现此错误
术语“Get-WmiObject”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
使用 (Get-CIMInstance CIM_ComputerSystem).Name 与此命令相同的问题
术语“Get-CIMInstance”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
您是否知道使用 powershell 使用 dotnet 核心执行 Get-CIMInstance 或 Get-WmiObjet 的解决方法?
更新
private PSDataCollection<PSObject> InvokeScript(string script)
{
using (PowerShell ps = PowerShell.Create())
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
ps.Runspace = runspace;
ps.AddScript(script);
ps.Streams.Error.DataAdded += Error_DataAdded;
PSDataCollection<PSObject> outputCollection = new PSDataCollection<PSObject>();
outputCollection.DataAdded += OutputCollection_DataAdded;
var result = ps.BeginInvoke<PSObject, PSObject>(null, outputCollection);
foreach (var item in ps.Streams.Error)
{
_logger.LogError(item.ToString());
}
_logger.LogInformation("Execution has stopped. Execution state: " + ps.InvocationStateInfo.State);
return outputCollection;
}
}
当我调用脚本Get-Command
时,我在结果中找到了 Get-WmiObject。但是当我调用Get-WmiObject
时,它不会运行!