Powershell命令不会在C#中运行

本文关键字:运行 命令 Powershell | 更新日期: 2023-09-27 18:29:24

我正在编写一个c#Windows窗体应用程序,以.pst格式将Exchange 2010邮箱迁移到服务器上的文件位置。我使用了Powershell SDK(Runspace05)中的一个示例来访问exchange cmdlet(Get-Mailbox),并用用户邮箱填充组合框,没有问题。

我遇到的问题是让New-MailboxExportRequest cmdlet(执行导出的cmdlet)运行,以及返回其对象并在列表框控件中显示它们的能力。我错过了什么?提前感谢您的帮助。

代码:

InitialSessionState iss = InitialSessionState.CreateDefault();
        PSSnapInException warning;
        iss.ImportPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", out warning);
        using (Runspace myrunspace = RunspaceFactory.CreateRunspace(iss))
        {
            myrunspace.Open();
            using (PowerShell powershell = PowerShell.Create())
            {
                var mailbox = cmbEmailUserName.Text;
                var pstFile = txtFileSaveLocation.Text;
                const int badLimit = 100; //can be increased in necessary
                powershell.AddCommand("Microsoft.Exchange.Management.PowerShell.E2010''New-MailboxExportRequest");
                powershell.AddParameter("Mailbox", mailbox);
                powershell.AddParameter("FilePath", pstFile);
                powershell.Runspace = myrunspace;                 
                Collection<PSObject> results = powershell.Invoke();
                foreach (PSObject thisResult in results)
                        {
                            lstBoxStatus.Items.Add(thisResult);
                        }
        myrunspace.Close();
            }
        }

Powershell命令不会在C#中运行

您想要访问PSObject的属性,而不是对象本身。

试试这个:

foreach (PSObject thisResult in results)
{
    foreach (PSPropertyInfo thisResultInfo in thisResult.Properties)
    {
        lstBoxStatus.Items.Add("Name: {0} Value: {1} Type: {2}", thisResultInfo.Name, thisResultInfo.Value, thisResultInfo.MemberType);
    }
}