I'm trying to execute this command:
Get-WmiObject -Class Win32_Product -Filter "Vendor = 'Microsoft'"
on .NET Core 3.1 app hosted on Windows
Here's my code:
var param = new Dictionary<string, object>();
param.Add("Class", "Win32_Product");
param.Add("Filter", "Vendor = 'Microsoft'");
var result = await ScriptHelper.RunScript("Get-WmiObject", param);
public static async Task<string> RunScript(string scriptContents, Dictionary<string, object> scriptParameters)
{
using (PowerShell ps = PowerShell.Create())
{
ps.AddScript(scriptContents);
ps.AddParameters(scriptParameters);
var pipelineObjects = await ps.InvokeAsync().ConfigureAwait(false);
var sb = new StringBuilder();
foreach (var item in pipelineObjects)
{
sb.AppendLine(item.BaseObject.ToString());
}
return sb.ToString();
}
}
But for some reason it returns an empty string instead of e.g
IdentifyingNumber : ...
Name : ...
Vendor : Microsoft
Version : ...
Caption : ...
I'm using
"Microsoft.PowerShell.SDK" Version="7.0.3"
Thanks in advance
pipelineObjectsis Empty (count = 0)Get-WMIObjectnot work on PS v7 at all? Did you try to useGet-CimInstanceinstead?