无法将数组从Powershell传递到C#运行空间结果

无法将数组从Powershell传递到C#运行空间结果,c#,powershell,invoke,C#,Powershell,Invoke,我试图获得一个数据库大小列表,以便从Powershell进入c#组合框,但没有得到任何结果。在疯狂的谷歌搜索之后,我仍然不确定从哪里开始。因此,如何将$AllDB数组返回给c#?这是一个对象类型问题(我尝试了多次迭代)还是我缺少的概念?如果我只是运行一个基本的cmdlet,那么一切都可以运行,并将填充组合框(例如Get进程) 此外,代码还将DB名称和大小输出到控制台,输出字符串和输出默认值也不起作用 Powershell代码: foreach ($db in Get-MailboxDat

我试图获得一个数据库大小列表,以便从Powershell进入c#组合框,但没有得到任何结果。在疯狂的谷歌搜索之后,我仍然不确定从哪里开始。因此,如何将$AllDB数组返回给c#?这是一个对象类型问题(我尝试了多次迭代)还是我缺少的概念?如果我只是运行一个基本的cmdlet,那么一切都可以运行,并将填充组合框(例如Get进程)


此外,代码还将DB名称和大小输出到控制台,输出字符串和输出默认值也不起作用

Powershell代码:

    foreach ($db in Get-MailboxDatabase -identity exchangeserver\nameprefix*) 
    {
    $mountedServer = $db.ServerName
    $edbFilePath = $db.edbFilePath.PathName
    $path = "`\`\" + $mountedServer + "`\" + $edbFilePath.Split(":")[0].ToString() + "$"+ $edbFilePath.Split(":")[1].ToString()
    $dbsize = Get-ChildItem $path
    $ReturnedObj = New-Object PSObject -Property @{
    DatabaseIdentity = $db.Name
    Size = [Math]::Round($dbsize.Length/1gb, 2)
}
    $AllDB +=$ReturnedObj

}
 $AllDB |Sort-Object Size|convertto-csv -NoTypeInformation | % { $_ -replace '"', ""}| % { $_ -replace ',', " "} 
C#代码:


“代码将DB名称和大小输出到控制台就可以了”-在哪里?当您在
powershell.exe
中运行它时?或者在C#应用程序中?代码在PowerShell中运行良好我认为您在这里关注的是错误的事情(输出格式)-可能是它失败了(在C#中)因为您尚未在运行空间中导入Exchange模块并调用
Connect ExchangeServer
-导致
Get MailboxDatabase
调用失败,
$AllDB
为空,$AllDB获取数据并可以正常输出。我在开始时做了连接,就像我说的那样,它运行良好,但不起作用的部分是在结果部分将数组返回到C#。无论我做什么,结果都是空的。
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();
        using (PowerShell ps = PowerShell.Create())
        {
            ps.Runspace = runspace;
            ps.AddCommand(script);
            var results = ps.Invoke();
            foreach (PSObject result in results)
            {
                comboboxID.Items.Add(result);
            }
        }
        runspace.Close();
    }