将本地用户密码转换为安全字符串不起作用

时间:2019-02-14 17:29:35

标签: powershell

我需要更改本地用户密码。当我将其转换为安全字符串时,它的行为就像更改了它一样,但是当尝试登录该帐户时,它并不需要密码。不知道我在做什么错,但是我知道要让Powershell的Set-LocalUser cmdlet接受密码,它必须是安全字符串。下面是代码

$UnsecurePassword = "Testing1234"
$SecurePassword = ConvertTo-SecureString $UnsecurePassword -AsPlainText -Force
$localaccount = Get-LocalUser -Name "Local" -ea stop | Enable-LocalUser
$localaccount | Set-LocalUser -Password $SecurePassword -PasswordNeverExpires 1 -ea stop

3 个答案:

答案 0 :(得分:2)

您的问题是线路

$localaccount = Get-LocalUser -Name "Local" -ea stop | Enable-LocalUser

由于Enable-LocalUser不返回任何内容,也没有-PassThru参数,因此您最终以$localaccount为空。

因此将您的脚本更改为:

$UnsecurePassword = "Testing1234"
$SecurePassword = ConvertTo-SecureString $UnsecurePassword -AsPlainText -Force
$localaccount = Get-LocalUser -Name "Local" -ea stop 
$localaccount | Enable-LocalUser
$localaccount | Set-LocalUser -Password $SecurePassword -PasswordNeverExpires 1 -ea stop

答案 1 :(得分:1)

这是设置密码的最简单方法,您可以添加其他内容以确保启用了密码以及您需要的其他任何方式。在我看来,设置密码是最简单的方法。

Set-LocalUser -Name Local -Password (ConvertTo-SecureString -String 'Testing1234' -AsPlainText -Force)

答案 2 :(得分:0)

powershell 中的最小解决方案 > 5, Win 10

TL;DR:

Set-LocalUser -Name Local -Password (ConvertTo-SecureString 1234 -AsPlainText)

调查结果

您可以省略 force 参数以获得与对方答案相反的最小解决方案。

一种天真的方法是将密码更改为无密码Set-LocalUser local。试试看,在 powershell 中它不起作用。不过,在 Windows 10 中的 gui 中可以取消设置密码。