2015-11-23 31 views
2

我有一個非常簡單的問題。有什麼更好的使用? AD模塊(即Get-ADComputer)或DirectoryServices .NET Class嘗試連接到AD並從域中提取所有計算機,用戶和組時。或者根本不重要?我應該使用Active Directory模塊cmdlet還是DirectoryServices .NET類

我判斷對使用哪種方法的關鍵因素是:

  1. 哪種方法的腳本將運行得更快?
  2. 哪個放置網絡/ AD的負載較小
  3. 每種方法都有哪些限制?

我知道AD模塊只安裝在Win Server 2008 R2和更高版本上,默認情況下是在舊服務器上默認安裝的,該模塊默認情況下不安裝。但是在當今世界,如果所有服務器的環境都不比2008 R2更早,那麼這個環境確實不應該成爲問題。

我想要做的就是將所有User對象(以及一些重要的字段/屬性),所有Computer對象以及所有Group對象解壓縮到.csv。所以基本上「搜索」AD對象並循環遍歷每個結果行,然後保存到一個表以導出到.csv。

+0

我不確定這是否太寬泛。如果沒有別的東西,它可能真的取決於你在做什麼以及你試圖返回的數據。使用activedirectory模塊,簡單查詢會更簡潔明瞭。 IIRC .net的幾乎總是會更快,但我沒有任何支持。 – Matt

+0

我所要做的就是將所有用戶對象(以及一些重要的字段/屬性),所有計算機對象以及所有組對象提取到.csv。所以基本上「搜索」AD對象並循環遍歷每個結果行,然後保存到一個表以導出到.csv。 –

+1

您可以爲它們編寫示例代碼並使用'Measure-Object'來測量它們的執行時間嗎? – sodawillow

回答

0

我在問題中添加了最後一條評論,因爲它只是描述了一個很長時間在Windows服務器上存在的小工具。

Csvde.exe使用非常接近Ldifde.exe的語法,它允許您使用LDAP query syntax提取活動目錄對象。據我所知,這些工具由ADSI提供支持。

你可以看看this答案。

3

的ActiveDirectory中的cmdlet是比使用的System.DirectoryServices更直觀,但是你可能會失去一些的System.DirectoryServices提供了控制。對於大多數情況下,特別是對於新的PowerShell人員,我建議使用ActiveDirectory cmdlet

就像速度一樣,@sodawillow建議,您可以測量每個的執行時間,然後使用最快的速度。我可以給你軼事,但他們不會代表每個人的經驗。

+0

感謝這是一個很好的答案。你能否提供你的見解/想法/意見?你說「我可以給你軼事......」。我會對你的經驗非常感興趣,無論它是否可以普遍同意或接受。 –

+0

@ TrackABill.com - 我運行了一些簡單的測試,使用這兩種方法檢索域上的所有用戶對象。成千上萬的物體。每次測試10次,使用DirectoryServices的次數大約是每次3倍。不要把它當作證據。這就是我在這種情況下的情況。建議運行你自己的測試,如果速度對你來說很重要。對我而言,除非速度至關重要,否則我仍會堅持使用AD cmdlet,以便使用和易讀。 –

+0

謝謝!這有很大幫助。真的很感激它。最後一個問題......我用一個包含50k個計算機對象,30k個組和120k個用戶的域來運行我的腳本。運行大約需要一個小時是否正常?謝謝! –

相關問題