Powershell 用于解锁锁定的域用户的命令

Powershell 用于解锁锁定的域用户的命令,powershell,dns,directory,command,locked,Powershell,Dns,Directory,Command,Locked,我一直在使用这些来列出我域中锁定的用户,并提示我输入samaccountname以解锁所需用户: 我用了3个文件 第一个是ps1,列出所有这些 import-module activedirectory search-adaccount -lockedout | select name, samaccountname, OU 第二个是另一个ps1文件: $user = Read-Host "Enter user account (SAMACCOUNTNAME) to

我一直在使用这些来列出我域中锁定的用户,并提示我输入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总是试图优化它为您提供的输出。因此,输出的顺序可能与脚本中的命令的预期顺序不同。如果可能,它将连接输出以提高可读性,特别是当它是相同类型的对象时。要打破这个,你可以使用一个格式的代码,如<代码>格式表>代码> PAR示例。
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
的语句。如果没有安装active directory模块,甚至会阻止脚本运行

为什么要对锁定的帐户运行两次搜索?实际上,您所需要的是这样的:
搜索账户-锁定输出|解锁账户
!?顺便说一句:“OU”不是作为cmdlet
搜索帐户的输出而获得的属性。你可以得到“与众不同的名字”。这是一个关于你在剧本中所经历的行为的想法。Powershell始终尝试为您“优化”输出。因此,生成的输出Powershell的顺序不必与您运行的命令相同。如果您在初始的
搜索账户后面放置
格式表
,您将获得所需的输出。我使用Search ADAccount-LockedOut两次:一次列出所有锁定的用户,第二次解锁从listFormat表中找到的无效用户。你能再解释一下吗?也许我做错了