在 Windows Server 2008 R2 上,我有一个标准(非管理员)本地用户(不是 Active Directory 帐户,尽管服务器在域中),他只能通过 PowerShell Remoting 访问服务器。用户无法通过 RDP 登录。
我希望这个用户能够更改他们的密码。“net user”命令需要管理员权限,即使用户试图更改自己的密码。
标准用户如何从命令行更改密码?
在 Windows Server 2008 R2 上,我有一个标准(非管理员)本地用户(不是 Active Directory 帐户,尽管服务器在域中),他只能通过 PowerShell Remoting 访问服务器。用户无法通过 RDP 登录。
我希望这个用户能够更改他们的密码。“net user”命令需要管理员权限,即使用户试图更改自己的密码。
标准用户如何从命令行更改密码?
下面是一些 PowerShell 代码,用于执行您正在寻找的域帐户:
ASDI 提供程序还支持该
WinNT://computername/username
方法的语法ChangePassword()
。但是,该ADSystemInfo
对象不适用于机器本地帐户,因此仅使用WinNT://...
语法修改上面的代码是行不通的。(有人想建议使用代码进行编辑以区分本地帐户和域帐户吗?)
在完全不同的策略上,旧
NetUserChangePassword
API 也可以与本地(和域,只要您在 NetBIOS 语法中指定域名)帐户一起使用:此代码假定您正在更改本地计算机上的密码(“.”)。
这在 PowerShell 中实际上非常简单:
我尝试了上述两个答案均无济于事,以更改未加入域的本地管理员的密码。挖掘评论产生了我需要的东西。
对于当前接受的答案的第二部分,您希望更新要使用的签名
long
而不是bool
返回值,这些可以在系统错误代码文档中进行故障排除。所以你最终得到:但是,这对我不起作用。错误代码在 86 和 2221 之间交替,这取决于我如何设置参数。正要放弃,又在评论里挖了更多,终于发现成功了:
在 Powershell 中简单地更改本地管理员密码是如此复杂,这绝对是荒谬的。如果您在系统上存储了安全字符串,则必须通过提供旧密码来更新密码,否则可能会失去正确解密这些安全字符串的能力!