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。