我正在创建一个带有基本变量的脚本,以通过 PS7 在 AD 中创建用户,而不是远程处理到 AD 并手动创建。它会回答几个问题,然后我的脚本将在最后运行以创建 AD 用户。
当我不知道 while 循环时,这是非常原始的起始块
$NewPassword = (Read-Host -Prompt 'Please enter User New Password' -AsSecureString)
$NewPasswordMatch = (Read-Host -Prompt 'Please re-enter User New Password' -AsSecureString)
$newp1 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($NewPassword))
$newp2 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($NewPasswordMatch))
if ($newp1 -CEQ $newp2) {
Write-Host "Passwords matched" -ForegroundColor Green
} else {
Write-Host "Passwords incorrect - please reset in AD once user is
created" -ForegroundColor Red
}
我已经掌握了基础知识的所有内容,但我在密码循环功能方面遇到了困难。我一度让它循环,但它不会写主机“密码不匹配,请重试”。我现在已经玩了很多次了,但无法恢复到原来的样子,所以寻求帮助,并希望我犯了一个愚蠢的错误,因为我对代码视而不见。
- 我要求技术人员输入用户密码两次以确保没有拼写错误
- 我有脚本检查 PW1 是否与 PW2 匹配。
- 我可以让它检查,并产生“OK”或“Not OK”的屏幕提示
- 我无法让它建议“密码不匹配”,然后循环回到顶部让技术人员再次输入密码,直到正确为止。当它正确时,它将继续执行下一段脚本
我对 PowerShell 非常陌生,除了在线网络研讨会和书籍之外,我是自学的,我理解 While 的前提,但不是 100% 理解其中的要点。该脚本是在创建 AD 帐户之前创建的,完整的脚本是在您到达最后一个问题后创建它。之后它将运行 new-aduser 等。
while( $true){
$NewPassword = (Read-Host -Prompt 'Please enter User New Password' -AsSecureString)
$NewPasswordMatch = (Read-Host -Prompt 'Please re-enter User New Password' -AsSecureString)
$newp1 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($NewPassword))
$newp2 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($NewPasswordMatch))
try{
if ($newp1 -CEQ $newp2){
Write-Host "Password Accepted" -ForegroundColor Green
}
Break
}
catch{
Write-Host "Passwords do not match, please try again" -ForegroundColor Red
}
}