【问题标题】:Command to Unlock a locked domain user解锁锁定域用户的命令
【发布时间】:2018-06-23 10:49:02
【问题描述】:

我一直在使用这些来列出我域中的锁定用户并提示我输入 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 文件会非常相似...

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

【问题讨论】:

  • 为什么要对锁定的帐户进行两次搜索?实际上你所需要的就是这样的:Search-ADAccount -LockedOut | Unlock-ADAccount!?
  • 顺便说一句:“OU”不是您从 cmdlet Search-ADAccount 的输出中获得的属性。您可以获得“DistinguishedName”。
  • 对您在脚本中体验到的行为的想法。 Powershell 总是尝试为您“优化”输出。因此,Powershell 生成的输出不必与您运行的命令的顺序相同。如果您将 Format-Table 放在初始 Search-ADAccount 后面,您将获得所需的输出。
  • 我使用 Search-ADAccount -LockedOut 两次:一次列出所有锁定的用户,第二次解锁我从列表中找到的用户
  • 格式表不起作用。你能解释更多吗?也许我做错了

标签: powershell dns directory command locked


【解决方案1】:

Powershell 总是尝试优化它为您提供的输出。因此,输出的顺序可能与您对脚本中命令的期望不同。如果可能的话,它将连接输出以提高可读性,尤其是当它是相同类型的对象时。要打破这一点,您可以使用格式 cmdlet,例如 Format-Table 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 之类的#Requires -Modules activedirectory 语句。如果没有安装活动目录模块,这甚至会阻止脚本运行

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 2015-01-18
    • 2023-03-17
    • 2010-12-22
    • 2021-11-10
    • 2021-12-28
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多