powershell - Set-ADuser 和“用户下次登录时必须更改密码”的问题
问题描述
:) 我有个问题。我正在学习 powershell 并编写初始脚本。我想编写一个脚本来检查用户是否在域中。然后我希望这个用户帐户检查“用户下次登录时必须更改密码”,同时我想稍后取消选中。如果用户不在域中,我希望显示一条消息,说明 AD 中没有帐户。
我编写了以下不太工作的脚本....虽然脚本在 AD 中找到正确输入的帐户没有任何问题,但如果它输入了不正确的登录名,我收到消息“Set-ADUser:找不到具有身份的对象:DC = xx,DC = xx中的“测试”。如果输入的登录名不正确,这不是我希望看到的。问题是否是一个写得不好的 if 语句?
谢谢您的帮助。
查看我的代码:
$User = Read-Host "Enter user login: "
if($User)
{
Write-Verbose "Searching user..." -Verbose
Set-ADUser -Identity $User -ChangePasswordAtLogon $true
if($true)
{
Set-ADUser -Identity $User -ChangePasswordAtLogon $false
get-aduser -identity $User -properties * |
select accountexpirationdate, accountexpires, accountlockouttime, badlogoncount, padpwdcount, lastbadpasswordattempt, lastlogondate, lockedout, passwordexpired, passwordlastset, pwdlastset |
format-list
Write-Verbose "Password extended!" -Verbose
}
}
else
{
echo "User doesn't exist!"
}pause
解决方案
您可以使用带有异常消息的“Try/Catch”以避免在 AD 中不存在用户帐户的情况下引发错误。
$User = Read-Host "Enter user login"
If ($User)
{
Write-Host "Searching User $User..."
Try
{
Get-ADUser -Identity $User
Set-ADUser -Identity $User -ChangePasswordAtLogon $True
}
Catch [Microsoft.ActiveDirectory.Management.ADIdentityResolutionException]
{
Write-Host "User account $User does not exist."
}
}
Else
{
Write-Host "Username is empty."
}
此外,您不必稍后取消选中“下次登录时必须更改密码”,因为您仅在用户存在时才检查它。
推荐阅读
- javascript - 如何使用我的脚本检测鼠标轮询率?
- python - 全局设置模块路径
- api - 社区连接器“响应”和“请求字段”未定义
- java - 错误:不兼容的类型:推理变量 R 的边界不兼容
- vba - 如何使用另一个模块中的对象?
- python - Tensorflow DNNClassifier 单元测试功能
- c++ - 正在发送到另一个窗口的鼠标移动消息什么也不做
- python - 有没有办法使用 googlesheets api 和 gspread 格式化多个工作表
- c# - GmailAPI 服务帐户访问是否*需要*委派域范围的权限以仅从所有者的地址发送邮件?
- python - 有没有办法获得所有求和组的最小值?