WinPE — это не обычная Windows, а командлеты Active Directory очень особенные (им нужна настройка для работы на несерверных ОС), так что это плохая комбинация.
Как прокомментировал iRon, есть способы включить это, но они всегда будут неподдерживаемым взломом. Если версия PE изменится, возможно, это нужно сделать с другими файлами, или может случиться так, что новая версия просто полностью нарушит хак. Вы не должны полагаться на что-то подобное для OSD. (Я не знаю о вашей конкретной настройке AD, но для большинства из них будет гораздо меньше работы по жесткому кодированию доменных имен в скрипте и обновлению скрипта при каждом добавлении сайта, чем всегда идти в ногу с изменениями PE, которые по плану 3 раза в год)
Запасной вариант для всех вещей, связанных с AD, которые работают без модуля, будет adsi, который может работать в PE (в целом, чтобы Powershell работал, вам нужно изменить загрузочный образ, но эти изменения поддерживаются SCCM, поэтому они не обеспечивают дополнительной работы над изменениями выпуска). и вы, вероятно, уже сделали это, чтобы зайти так далеко)
С помощью adsi вы можете получить список своих сайтов следующим образом:
$sitesDN = "LDAP://CN=Sites," + $([adsi] "LDAP://RootDSE").Get("ConfigurationNamingContext")
$ADSites = (([adsi]$sitesDN).psbase.children | where {$_.Objectclass -ieq "site"}).Name
В качестве примечания: я предполагаю, что у вас есть разные сайты для этого кода. Если это один из тех случаев, когда этот метод будет «золотым стандартом», потому что он работает независимо от настройки AD, но лично у вас есть только один сайт, который вряд ли изменится (как, вероятно, многие люди), я бы не советовал такое сложное решение, даже если оно отказоустойчиво и просто жестко кодирует имя. PE имеет много особых случаев, и иногда его трудно отлаживать, поэтому, если возможно, уменьшите сложность (конечно, если это позволяет вам сохранять то же удобство).
person
Syberdoor
schedule
07.01.2020