Como faço para pegar a saída do meu objeto Powershell e transformá-lo em objeto c #? Estou tentando obter informações de espaço livre em unidades remotas e encontrei este tópico SO que gostaria de usar: Como obter o valor do script do PowerShell na variável C#?
Talvez se transforme no seguinte:
class MyCSharpObject
{
public string Name { get; set; }
public string Used { get; set; }
public string Free { get; set; }
}
Entrada:
using System.Collections.ObjectModel;
using System.Management.Automation;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
using (PowerShell ps = PowerShell.Create())
{
ps.AddScript(@"
Invoke-Command -ComputerName "Server1" {Get-PSDrive C} | Select-Object PSComputerName,Used,Free
");
Collection<PSObject> result = ps.Invoke();
foreach (var outputObject in result)
{
// outputObject contains the result of the powershell script
}
}
}
}
}
Saída:
outputObject.ToString()
"@{PSComputerName=Server1; Used=130904309760; Free=136322117632}"
Com base no PSObject, você pode apenas usar
outputObject.Members
/outputObject.Properties
para obter valores e depois usá-los para preencher seu tipo personalizado.Exemplo: https://www.codeproject.com/Tips/5335001/Retriev-data-from-executed-commands-in-PowerShe