2009-08-11 126 views
2

我正在處理需要與Exchange進行交互的.net應用程序,特別是創建Exchange對象。它是一個基於Web的應用程序,但後端將在Exchange服務器上作爲服務運行。是PowerShell的瓶頸

我試圖決定與Exchange進行交互的最佳方式。我最初的想法是使用PowerShell,用於操作的某種服務排隊系統,但是我擔心這可能會使應用程序變慢,因爲某些PowerShell操作可能需要一些時間。我會更好地使用HMC來做到這一點嗎?或者這是HMC基本上無法分解的原因嗎?

據我所知,沒有任何其他Exchange與交互的選項,Exchange Web服務不允許您創建更高級別的對象。我非常高興使用PowerShell,只要它不會成爲一個大瓶頸,任何替代建議,或模式,使這更容易將非常感激。

+1

我得到的和你描述的非常相似。我使用ADSI(System.Directory命名空間)來執行除Exchange之外的所有操作。今天,我的解決方案使用CDOEXM,因爲它適用於Exchange 2003,Exchange部分很慢。我一直在玩PowerShell來升級我的例程,我不相信它會變慢。所有這一切說,我相信這是交易所緩慢,而不是Powershell。 – 2009-08-12 01:00:08

回答

4

PowerShell可能是一個瓶頸,它使用了錯誤的習慣用法。比較這三個代碼示例

$ii=0; 0..10000 | % { $ii++ }; $ii 
for ($ii=0;$ii -lt 10001;$ii++) { $sum+=$ii } ; $sum 
0..10000 | measure-object -Sum 

使用Measure-Command得到執行時,首先需要350毫秒,第二74,第三28ms。

一般來說,在PowerShell中管理許多對象並不是實現某些功能的最快方法,但是如果腳本主要是關於AD和COM調用的,就像在Exchange中一樣,限制因素不太可能是PowerShell。