Как обновить учетные данные в скрипте powershell после смены пароля - PullRequest
0 голосов
/ 04 июля 2019

У меня есть длительный скрипт powershell.Он запускается при входе в систему через объект групповой политики, подключается к Exchange с текущими учетными данными пользователя, а затем возвращается в спящий режим.Он делает это примерно каждые полчаса и продолжается до тех пор, пока пользователь не выйдет из системы.

Проблема возникает, если пользователь меняет свой пароль в течение этого времени.В следующий раз, когда скрипт пытается подключиться к Exchange, он потерпит неудачу.Я предполагаю, что это потому, что учетные данные, хранящиеся в сеансе powershell, больше не действительны.

Есть ли способ обновить / обновить учетные данные сценариев из O / S?

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

Есть мысли?Я не хочу использовать Get-Credential, поскольку это требует подсказки.Я также не хочу хранить пароль в файле.

[System.Security.Principal.WindowsIdentity] может предоставить способ?Не совсем уверен, с чего начать.

Обновление: я использую EWS согласно: https://devblogs.microsoft.com/scripting/learn-to-use-the-exchange-web-services-with-powershell/

Вы можете использовать учетные данные, сохраненные в текущем сеансе powershell, согласно: $ exchService.UseDefaultCredentials= $ true

1 Ответ

0 голосов
/ 06 июля 2019

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

  1. Скрипт запускается, успешно подключается к Exchange, спит
  2. Пользователь меняет пароль Windows
  3. Скрипт просыпается, сбой подключения к Exchange
  4. Ошибка перехвата с помощью try / catch, создайте запланированное задание для запуска через 5 секунд с Schedule.Service COMObject
  5. Выход из сценария
  6. Задача запускает и перезапускает скрипт powershell с обновленными учетными данными. Подключение к Exchange успешно. Скрипт спит
  7. Задача автоматически удаляется через Settings.deleteExpiredTaskAfter = 'PT0S' - что происходит немедленно. Вам также необходимо установить .EndBoundary на триггер

Работает довольно аккуратно, но это что-то вроде хака. Мне нравится видеть более элегантное решение от кого-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...