[英]Run powershell from c# most efficient way to create multiple mailcontacts in Exchange Online
我希望通過從C#運行Powershell命令在Microsoft Online中的GAL中創建多個mailcontact(外部聯系人)。 下面的代碼可以運行,但是速度很慢,大約需要15-20分鍾才能運行400個郵件聯系人。
foreach(EmailAdressVM emailAddressVM in emailList.emailAddresses1)
{
//Create New MailContact.
Pipeline pplNewMailContact = runspace.CreatePipeline();
Command cmdNewMailContact = new Command("New-MailContact");
cmdNewMailContact.Parameters.Add("Name", emailAddressVM.sExternalEmailAddress);
cmdNewMailContact.Parameters.Add("Displayname", emailAddressVM.sFullName.Trim());
cmdNewMailContact.Parameters.Add("Lastname", emailAddressVM.sLastName.Trim());
cmdNewMailContact.Parameters.Add("Firstname", emailAddressVM.sFirstName.Trim());
cmdNewMailContact.Parameters.Add("ExternalEmailAddress", emailAddressVM.sExternalEmailAddress.Trim());
pplNewMailContact.Commands.Add(cmdNewMailContact);
pplNewMailContact.Invoke();
pplNewMailContact.Stop();
pplNewMailContact.Dispose();
}
我猜測這很慢,因為我為添加的每個新郵件聯系人創建了一個新管道,並且自運行以來必須有一種更有效的方式來執行此操作...
import-csv <filename> | ForEach {
new-mailcontact -name $_.emailaddress -displayname $_.FullName -lastname $_.lastname -firstname $_.firstname -externalemailaddress $_.emailaddress -alias $_.alias
}
...快得多。
在網上搜索了許多小時后,我發現了一些參考,您可以從C#運行Powershell命令時執行與使用CSV類似的操作,即將值列表(或數組)發送到命令(在本例中為“ new- mailcontact”命令)。 但是,我還沒有找到任何有關如何向命令發送多個值的好示例,並且我需要向“ new-”提供許多值(例如:-name $ .emailAddress -displayname $ .FullName等)。 mailcontact”命令。
是否可以使用與“ import-csv”命令類似的方式(使用常規powershell時)發送列表(或數組),這樣會更快,還是有更好的方法? 如果我使用Powershell 3而不是1(因為我現在正在使用),將會獲得更好的性能。
請提供有效的示例代碼C#!
請注意,我無法將CSV文件保存到磁盤,也無法從CMD執行powershell,因為我沒有對磁盤的寫訪問權限,並且我不認為我可以遠程運行整個腳本(因為遠程腳本可能在Exchange Online上被禁用了) )。
我認為最大的原因是因為您為每個地址創建了一個新的Powershell實例,並且您沒有使用多線程。
您的代碼從上面看起來像這樣:
Foreach email address{
Declare a new Powershell process
Add attributes to call later
Start Powershell and pipe stuff in
Close Powershell instance
}
我認為您最好一次創建Powershell實例/管道,然后將每個對象發送到其中。 更多內容如下:
Create PS Pipe
Foreach email address{
PS.SendArguments(Email, Name, DN, etc.);
}
我現在不在環境中進行任何工作或測試,因此希望這至少可以為您提供所需的大部分東西...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.