我一直在使用这些列出我域中的锁定用户,并提示我输入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文件将完全相同...
感谢任何阅读和帮助的人。
答案 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语句。如果没有安装活动目录模块,那甚至会阻止脚本运行