0

我需要获取有关系统的信息。我可以使用 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时,它不会运行!

4

0 回答 0