我有一个运行很长时间的powershell脚本。它通过GPO在登录时启动,使用用户当前的凭据连接到Exchange,然后返回睡眠状态。它每半小时左右执行一次此操作,并持续到用户注销为止。
如果用户在此期间更改密码,则会出现此问题。脚本下一次尝试连接到Exchange时失败。我认为这是因为Powershell会话中存储的凭据不再有效。
是否可以从操作系统中刷新/更新脚本的凭据?
我想解决的另一种方法是在新的Powershell实例中重新启动脚本,从而获取一组新的凭据。这听起来有问题,因为我认为如果上下文是从正在运行的脚本中启动的,则上下文将传递给新会话。触发调用脚本的计划任务可能会奏效,尽管我没有尝试过,但似乎太费事了。
有什么想法吗?我不想使用Get-Credential,因为这需要提示。我也不想在文件中存储密码。
[System.Security.Principal.WindowsIdentity]
可能提供一种方法?不太确定从哪里开始。
更新: 我正在按照https://devblogs.microsoft.com/scripting/learn-to-use-the-exchange-web-services-with-powershell/
使用EWS您可以按照以下方式使用存储在当前Powershell会话中的凭据: $ exchService.UseDefaultCredentials = $ true
答案 0 :(得分:0)
所以我没有弄清楚如何在正在运行的Powershell会话中更新存储的凭据...肯定有可能...无论如何,这就是我所做的。
工作相当整洁,但这有点hack。很高兴看到别人提供的更优雅的解决方案。