Я работаю со скриптом Powershell, который добавляет запланированные задачи к системам в нашем домене. Когда я запускаю этот скрипт, он запрашивает мой пароль. Я иногда толстым пальцем набираю пароль и начинается процесс, который блокирует мою учетную запись. Есть ли способ проверить мои учетные данные, чтобы убедиться, что то, что я ввел, будет проверяться с доменом?
Я хотел бы найти способ запросить контроллер домена. Я сделал несколько поисков в Google, и я должен быть в состоянии сделать запрос WMI и ловушку для ошибки. Я хотел бы избежать такого стиля проверки, если это возможно.
Любые идеи? Заранее спасибо.
domain
powershell
password
Doltknuckle
источник
источник
AccountManagement.PrincipalContext.ValidateCredentials()
это не так (если вы предоставляете безопасную строку для пароля)?ActiveDirectory
модуль для выполнения LDAP-запроса?Это то, что я использовал в прошлом; он должен работать для учетных записей локальных компьютеров и «каталога приложений», но до сих пор я успешно использовал его только с учетными данными AD:
источник
$context
в качестве аргумента конструктору. PowerShell автоматически преобразует строки в перечисление. Еще лучше, просто сделайте[System.DirectoryServices.AccountManagement.ContextType]
тип$context
. Кроме того, почему вы используетеbegin
иprocess
здесь? Конвейер кажется странным способом использования этой функции.$context
параметра[System.DirectoryServices.AccountManagement.ContextType]
не возможен , поскольку сборка, содержащая сборку, не загружается до тех пор, пока не будет выполнено тело функции ; Использование конвейера полезно, если вы хотите проверить несколько учетных данных.Add-Type
вызов не может быть перемещен за пределы функции до выполнения ее определения. Я сомневаюсь, чтобыAdd-Type
вызов безоговорочно выполнялся повторно внутри функции, даже если она уже загружена. Проверка нескольких учетных данных одновременно кажется странной ситуацией. В редком случае это то, что вы хотите, вы можете легко обернуть вызовForEach-Object
, поэтому я не вижу причин усложнять функцию с ним.Я нашел этот пост полезным, однако он не решил мою проблему, так как я пытался запустить его из скрипта с локальной учетной записью администратора. Кажется, он не работает как локальный администратор (только при входе в систему как пользователь домена).
Однако мне, наконец, удалось получить рабочее решение, и, так как это было так сложно, я решил поделиться им здесь, чтобы у кого-нибудь еще с этой проблемой был ответ прямо здесь. Оба ответа на одной странице в зависимости от ваших потребностей.
Обратите внимание, что выше в scipt (сюда не входит, так как это просто раздел get-credentials) установлен powergui, и он является обязательным требованием для этого кода ниже (а также строки «Add-PSSnapin Quest.ActiveRoles.ADManagement»). Не уверен, что Powergui делает это по-другому, но никто не мог сказать мне, и это работает.
Подставьте свое собственное доменное имя в разделы "имя_домена".
источник
(пока) Другая версия:
а также
источник