解锁锁定的域用户的命令

时间:2018-06-23 10:49:03

标签: powershell dns directory command locked

我一直在使用这些列出我域中的锁定用户,并提示我输入samaccountname来解锁所需的用户: 我用3个文件做到了。

第一个是ps1列出所有这些

createChooser()

第二个是另一个ps1文件:

chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

对于执行上述文件,我使用.bat文件:

    import-module activedirectory
    search-adaccount -lockedout | select  name, samaccountname, OU

当我运行它时...它列出了所有锁定的用户,我可以复制粘贴每个samaacount名称以解锁他们

问题是,当我想使用一个ps1文件执行此操作时,它不起作用。它只是询问samaccountname,但没有列出它

    $user = Read-Host "Enter user account (SAMACCOUNTNAME) to unlock or press ENTER to refresh list"
    Search-ADAccount -LockedOut | Where {$_.samaccountname -eq $user} | Unlock-ADAccount

我知道.bat文件将完全相同...

感谢任何阅读和帮助的人。

1 个答案:

答案 0 :(得分:0)

Powershell始终尝试优化它为您提供的输出。因此,输出顺序可能与您在脚本中的命令所期望的顺序不同。如果可能的话,它将连接输出以使其更具可读性,尤其是在对象类型相同的情况下。为了解决这个问题,您可以使用Format-Table等格式的cmdlet格式示例。

Search-ADAccount -LockedOut | 
    Select-Object -Property Name, sAMAccountName, DistinguishedName |
        Format-Table
$user = Read-Host -Prompt 'Enter user account (SAMACCOUNTNAME) to unlock or press ENTER to refresh list'
Search-ADAccount -LockedOut | 
    Where-Object -FilterScript {$_.samaccountname -eq $user} | 
        Unlock-ADAccount

至少,它在我的环境中有效。 顺便说一句:从Powershell版本3开始,您不再需要显式导入模块。它们将自动导入。最好在脚本顶部使用#Requires -Modules activedirectory之类的#Requires语句。如果没有安装活动目录模块,那甚至会阻止脚本运行