Рейтинг:2

Get-ADComputer с ЛЮБЫМ фильтром не работает (модуль загружен)

флаг cn

Я потратил на это много часов и безуспешно нанял нескольких людей, которые, как я знаю, являются экспертами по PowerShell. Это должно быть просто, но в этот раз точно не получится.

Задача:

  1. Я хочу получить все компьютеры в OU (компьютеры в OU будут меняться — я открыт для использования списка серверов, но его все равно нужно запускать, чтобы ежедневно получать компьютеры в OU и обновлять текстовый файл, прежде чем продолжить ко второму заданию - об объяснении).
  2. Затем я буду использовать компьютеры, найденные в OU, для запуска gpupdate (не принудительно, есть только одна политика, которая связывается в X раз в день - это успешно обрабатывается другим набором сценариев PS). Я знаю, что это можно сделать вручную для OU, но это не тот путь, которым мы хотим идти. Мы используем сторонний инструмент для запуска сценариев PS по расписанию.Планировщик задач не используется на этом компьютере из-за прошлых проблем с управлением, но, несмотря на это, сторонний инструмент в порядке. Проблема в том, что я не могу вернуть компьютеры в OU.

Я МОГУ вернуть все компьютеры и их основные свойства в моем домене, используя:

Get-ADComputer-Фильтр *

Однако у меня не было успеха с «SearchBase» и любым фильтром:

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

Я попытался переместить фильтр перед SearchBase, удалить кавычки вокруг *, использовать одинарные кавычки, оставить фильтр и ввести его при появлении запроса *, изменить регистр почти для каждого слова, проверенное имя OU, домен и т. д., добавив пробелы между OU и DC, меняем OU на CN, убеждаемся, что модуль загружен (он есть).

Даже когда я получаю эту часть работы, мой фрагмент продолжает выполнять gpupdate после канала, но я полностью убрал это, так как не могу пройти эту основную часть, чтобы собрать компьютер для обновления.

Дополнительное примечание — это было опробовано на Windows Server 2016 и Windows Server 2019, 16 ГБ 4 процессора, 32 ГБ 8 процессоров соответственно, просто чтобы показать мощность — ОС могут быть значительными, поскольку у меня не было проблем в прошлое на серверах 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 "*"

Любая помощь или указатели будут ОЧЕНЬ оценены. Я уверен, что у меня не будет никаких проблем с командой GPUpdate, как только я смогу вернуть текстовый файл компьютеров или компьютеров, хранящихся в памяти, и использовать команду после конвейера в той же строке powershell. Я могу удалить трубу, добавить новую строку, все, что нужно. Мне просто нужно вернуть эти учетные записи компьютеров, так как это OU будет сильно колебаться с течением времени.

Первоначально этот фрагмент PowerShell был найден по адресу https://blog.thesysadmins.co.uk/group-policy-gpupdate-an-ou-of-computers.html (см. метод 2)

флаг cn
Отличительное имя не может быть запрошено с подстановочным знаком. https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx. Было бы полезно, если бы вы подтвердили, что запрос работает вне PowerShell. Пользовательский запрос можно выполнить в расширенном поиске пользователей и компьютеров AD.
Semicolon avatar
флаг jo
Просто примечание: на скриншоте (и, возможно, где-то еще в вашей истории) вы ввели один из компонентов домена как ...DC-... вместо ...DC=. опечатка; у вас есть знак минус, когда он должен быть знаком равенства. Не знаю, насколько это виновато. Но это, безусловно, причина вашей ошибки на скриншоте.
Semicolon avatar
флаг jo
Вот несколько заметок: Get-ADComputer -Filter * -SearchBase "OU=Blah,DC=blah,dc=domain,dc=com" 100% вернет любой компьютерный объект на этом пути. Если вы не получаете результатов и ошибок, на этом пути ничего нет. Если вы получаете сообщение об ошибке и никаких результатов, прочтите сообщение об ошибке: «Объект каталога не найден» означает, что в вашей базе поиска имеется неправильная организационная единица. находясь в поиске. ОС-> не имеет значения / фильтрация-поиск по порядку -> не имеет значения / использование заглавных букв -> не имеет значения / Invoke-GPUpdate -> действительно? Ик.
флаг br
[1] когда вы используете `-Filter`... вы получите ТОЛЬКО ошибку, если есть синтаксическая ошибка. если фильтр ничего не возвращает... то это правильный ответ, и вы НЕ увидите никакой ошибки. ///// [2] `-Filter *` почти бессмысленно. не делайте этого - это добавляет сложности, но не приносит абсолютно никакой пользы.
tangled_cables avatar
флаг cn
@Semicolon Хороший улов, да, это определенно была опечатка, но, к сожалению, это всего лишь один из многих прогонов. Я считаю, что я запустил его только для этого поста на самом деле. Я уверен, что в других запусках, поскольку я использовал файл ps1 со знаками =, этой проблемы не было. Но классный синтаксис. Кроме того, что касается моего решения использовать Invoke-GPUpdate, это было хорошо... не мой выбор, новичок в компании, они не смогли заставить его работать, так что вот мы здесь. Запланированные задачи вроде как запрещены здесь, так что нет. И этот сценарий — один из 3, он просто применил изменения объекта групповой политики к компьютерам OU, а затем, когда объект групповой политики будет отсоединен, он запустится снова.
tangled_cables avatar
флаг cn
@GregAskew Я ценю обратную связь, раньше я понятия не имел о выдающемся имени. Я также обязательно буду использовать графический интерфейс для тестирования в следующий раз, когда у меня возникнут проблемы со сценариями, использующими модуль AD.
Рейтинг:1
флаг cn

Как ни странно, это было решено добавлением переменной для хранения компьютеров и запуском цикла for each: (к тому же у меня был неправильный порядок OU, но это не объясняло другие тесты, которые я провел с OU верхнего уровня, которые не удались.)

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

foreach ($компьютер в $компьютерах) {

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

}

Спасибо всем за вашу помощь. Возможно, это поможет кому-то еще в будущем.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.