Я потратил на это много часов и безуспешно нанял нескольких людей, которые, как я знаю, являются экспертами по PowerShell. Это должно быть просто, но в этот раз точно не получится.
Задача:
- Я хочу получить все компьютеры в OU (компьютеры в OU будут меняться — я открыт для использования списка серверов, но его все равно нужно запускать, чтобы ежедневно получать компьютеры в OU и обновлять текстовый файл, прежде чем продолжить ко второму заданию - об объяснении).
- Затем я буду использовать компьютеры, найденные в 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)