我正在编写一个 c# Windows 窗体应用程序,以将 Exchange 2010 邮箱以 .pst 格式迁移到服务器上的文件位置。我使用 Powershell SDK (Runspace05) 中的一个示例来访问交换 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();
}
}
最佳答案
您想访问 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);
}
}
关于c# - Powershell 命令不会在 C# 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472318/