Loops 验证广告中的用户,如果未找到用户,请再次询问
我正在尝试使用samaccountname在AD中查找特定用户如果我键入了错误的帐户,我希望问题重复,直到找到该用户,告诉我用户名并暂停,直到按下一个键。这是我到目前为止所做的,但它不起作用。我还是个笨蛋Loops 验证广告中的用户,如果未找到用户,请再次询问,loops,powershell,dsquery,Loops,Powershell,Dsquery,我正在尝试使用samaccountname在AD中查找特定用户如果我键入了错误的帐户,我希望问题重复,直到找到该用户,告诉我用户名并暂停,直到按下一个键。这是我到目前为止所做的,但它不起作用。我还是个笨蛋 do{ $User=Read-Host "Enter SamAcountname"} if (dsquery user -samid $User) { trap {$_ | write-host "Found user $_" } else { trap {$_ | write-host
do{
$User=Read-Host "Enter SamAcountname"}
if (dsquery user -samid $User)
{
trap {$_ | write-host "Found user $_"
}
else
{
trap {$_ | write-host "User not found!"
}
{
until ( $_-eq "found user")
}
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
这应该做到:
$prompt = "enter samaccountname"
do{
$User = Read-Host $prompt
} while (!$(dsquery user -samid $User;$prompt="User '$user' was not found, try again"))
$User
太棒了!除了(!$(dsquery和$User;$prompt),我什么都懂。这是什么意思?谢谢!while块应该是:(!(dsquery和$User))它基本上检查是否有输出,并否定答案,因此可以将条件评估为:只要没有输出重新提示,$prompt分配将更新提示文本。如果您将两个命令都放入其中,而它将失败,$()是允许两个命令都运行的一种变通方法。太棒了。感谢您的帮助!