解锁锁定域用户的命令

Command to Unlock a locked domain user

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

第一个是 ps1 列出所有

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

第二个是另一个 ps1 文件:

    $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 文件:

    :loop
    powershell.exe -ExecutionPolicy Bypass -File c:\ps\lockedlist.ps1
    powershell.exe -ExecutionPolicy Bypass -File c:\ps\unlock.ps1
    cls
    goto loop

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

但问题是,当我想使用一个 ps1 文件时,它不起作用。它只是要求 samaccountname 但它没有列出它

    import-module activedirectory
    search-adaccount -lockedout | select  name, samaccountname, OU
    $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 文件会非常相同...

感谢所有阅读和帮助的人。

Powershell 总是试图优化它为您提供的输出。因此,输出顺序可能与您在脚本中的命令所期望的顺序不同。如果可能,它将连接输出以提高可读性,尤其是当它是同一类型的对象时。要打破这一点,您可以使用格式 cmdlet,例如 Format-Table par example.

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 语句,例如 #Requires -Modules activedirectory。如果没有安装活动目录模块

,这甚至会阻止脚本运行