Win10 - Powershell - 结合“net user”和“runas”来避免凭据被擦除

Win10 - Powershell - 结合“net user”和“runas”来避免凭据被擦除

我希望能够自动化我管理的一些 PC。目前,我使用 Ansible,但我并不反对使用任何其他工具。

目标是能够远程更改 Windows 10 机器上单个用户帐户的密码,而用户不会失去对凭据管理器中保存的凭据的访问权限。

我知道在 Windows 10 上,按照设计,除非用户自己通过CTRL+ ALT+DEL密码更改屏幕触发命令,否则当密码更改时,保存的凭据和相关秘密将被抹去。

然而,我确信我不是第一个想要远程更改用户密码而又不想毁掉他们的凭证管理器和秘密的用户。

我用 Google 搜索了几天我能想到的该问题的所有组合,但似乎找不到合理的解决方案。

  • 使用“RunAs”命令的解决方案是否可以在无头机器上自动运行?
  • 如果没有,有没有办法在更改密码时从用户帐户中删除凭证擦除功能?

答案1

我不知道如何避免在更改密码时凭据被抹去。

作为一种解决方法,你可以在 控制面板 > 凭证管理器 使用“备份凭证”和“恢复凭证”按钮来保存和恢复变更后的用户凭证。

我认为 Windows 凭证比 Web 凭证更重要。

我建议在测试计算机上测试此方法。

答案2

据我所知,有两种方法可以更改本地 Windows 用户的密码。

  1. 提供用户名、旧密码和新密码。这在CTRL++页面上使用。在这种情况下,所有已保存的凭据都会被保留ALTDEL

  2. 使用各种 Windows 工具(包括)重置密码net user。在这种情况下,您只需提供用户名和新密码,而无需提供旧密码。在这种情况下,所有保存的凭据都会丢失,否则任何管理员都可以更改用户的密码,然后访问该用户的已保存凭据。

因此,如果您想保留凭据,则在更改密码时需要知道旧密码。

我知道有命令行工具允许你使用第一种方法。最终它只是一个 WIN32 API 调用

过去我用过passwd.exe一个叫 Alexander Frink 的人的产品,但我不确定它是否仍然可以在线获得。

答案3

调用NetUserChangePassword()API,例如通过pywin32 的

如果没有,有没有办法在更改密码时从用户帐户中删除凭证擦除功能?

不;该功能与其说是“擦除”,不如说是“丢失解密密钥”。虽然数据确实可能被擦除,但这主要是因为每个用户的 DPAPI 主密钥都使用他们的登录密码加密,并且所有凭据和私钥都使用该密码加密。因此,密码“更改”会重新加密 DPAPI 主密钥,但“重置”无法做到这一点(因为未提供旧密码)。

相关内容