Active-Directory

帶有任何過濾器的 Get-ADComputer 不起作用(已載入模組)

  • July 20, 2021

我在這方面花了很多時間,並聘請了一些我認識的 PowerShell 專家,但沒有任何運氣。它應該很簡單,但這次肯定不是這樣。

客觀的:

  1. 我想獲取 OU 中的所有電腦(OU 中的電腦將發生變化 - 我願意使用伺服器列表,但它仍然需要每天執行以獲取 OU 中的電腦並在繼續之前更新 txt 文件到第二個任務 - 即將解釋)。
  2. 然後,我將使用在 OU 中找到的電腦執行 gpupdate(不是強制,每天 X 時間只有一個策略被連結 - 這正在由另一組 PS 腳本成功處理)。我知道這可以為 OU 手動完成,這不是我們想要的方式。我們正在使用第三方工具按計劃執行 PS 腳本。由於過去的管理問題,此電腦上未使用任務計劃程序,但無論第三方工具都很好。問題是我無法退回 OU 中的電腦。

我可以使用以下方法返回域中的所有電腦及其基本屬性:

Get-ADComputer -Filter *

但是,我使用“SearchBase”和任何過濾器執行成功為 0:

Get-ADComputer -SearchBase "OU=WVDTestEnvironment,DC=contoso,DC=com" -Filter "*"

我嘗試將過濾器移動到 SearchBase 之前,刪除 * 周圍的引號,使用單引號,省略過濾器並在​​提示為 * 時輸入它,幾乎每個單詞都更改大小寫,驗證 OU 名稱、域等,在OU 和 DC,將 OU 更改為 CN,確保模組已載入(它是)。

即使我讓這部分工作,我的程式碼片段也會在管道之後繼續執行 gpupdate,但我已經完全取消了它,因為我無法通過這個基本部分來收集電腦進行更新。

附加說明 - 這已在 Windows Server 2016 和 Windows Server 2019 上進行了嘗試,分別為 16 gb 4 cpus、32 gb 8 cpus,只是為了顯示馬力 - 作業系統可能很重要,因為我在過去在 2012 年的伺服器上,我發現大部分腳本的頁面我相信是在 2012 R2 上執行的。

我試過執行:

Get-ADComputer -Filter 'DistinguishedName -like "CN=contoso,CN=com"'

以上不返回錯誤,但不返回任何結果。即使它也應該返回域中的所有電腦帳戶。

嘗試執行原始程式碼段時收到的錯誤: Get-ADComputer -SearchBase “OU=WVDTestEnvironment,DC=contoso,DC=com” -Filter “*” 如下: Powershell 程式碼和返回的錯誤

此 OU 也是子 OU,因此我也嘗試在搜尋庫中包含頂級 OU,但錯誤相同(未顯示)

Get-ADComputer -SearchBase "OU=TopLevelOUName,OU=WVDTestEnvironment,DC=contoso,DC=com" -Filter "*"

任何幫助或指示將不勝感激。我相信一旦我可以取回電腦的文本文件或保存在記憶體中的電腦並在同一 powershell 行上的管道之後使用該命令,我就不會遇到任何問題 GPUpdate 命令。我可以移除管道,添加新行,無論需要什麼。我只需要返回這些電腦帳戶,因為這個 OU 會隨著時間的推移而波動很大。

最初在https://blog.thesysadmins.co.uk/group-policy-gpupdate-an-ou-of-computers.html找到這個 PowerShell 片段(參見方法 2)

奇怪的是,這是通過添加一個變數來保存電腦並在每個循環中執行來解決的:(此外,我的 OU 順序錯誤,但這並不能解釋我使用頂級 OU 執行的其他測試失敗。)

$computers = Get-ADComputer - Filter * - SearchBase "OU=WVDTestEnvironment,OU=TopLevelOU,DC=contoso,DC=com"

foreach ($computer in $computers) {

Invoke-GPUpdate -Computer $computer.Name -RandomDelayInMinutes 0

}

感謝大家的幫助。也許這也將在未來對其他人有所幫助。

引用自:https://serverfault.com/questions/1069499