返回

使用 PowerShell 高效禁用 Active Directory 中的计算机

windows

通过 PowerShell 禁用计算机

引言

管理大量计算机是一项艰巨的任务,尤其是在需要禁用它们的时候。手动完成此过程既耗时又容易出错。本博客文章将指导你使用 PowerShell 脚本高效地禁用 Active Directory 中的计算机帐户。

问题

当尝试使用 PowerShell 禁用计算机帐户时,你可能会遇到以下错误:

Disable-ADAccount : 输入对象无法绑定到该命令的任何参数,原因可能是该命令不接受管道输入,或者输入及其属性与任何接受管道输入的参数不匹配。

解决方案

要解决此错误,你需要将计算机名称作为字符串传递给 Disable-ADAccount 命令。以下是修改后的脚本:

Import-Module ActiveDirectory

$computers = import-csv "C:\temp\test.csv"
foreach ($computer in $computers)
{
Disable-ADAccount -Identity $computer.name
Move-ADObject -Identity $computer.name -TargetPath "OU=Disabled computers, DC=domain, DC=com"
}

优化

为了提高脚本的效率,你可以将两个命令组合到一个管道中:

Import-Module ActiveDirectory

$computers = import-csv "C:\temp\test.csv"
$computers | ForEach-Object {
    Disable-ADAccount -Identity $_.name
    Move-ADObject -Identity $_.name -TargetPath "OU=Disabled computers, DC=domain, DC=com"
}

步骤分解

  1. 导入 Active Directory 模块: Import-Module ActiveDirectory
  2. 从 CSV 文件导入计算机列表: $computers = import-csv "C:\temp\test.csv"
  3. 使用 ForEach-Object 管道逐个处理计算机: $computers | ForEach-Object { }
  4. 禁用计算机帐户: Disable-ADAccount -Identity $_.name,其中 $_.name 获取当前计算机的名称。
  5. 将计算机移动到“已禁用计算机”OU: Move-ADObject -Identity $_.name -TargetPath "OU=Disabled computers, DC=domain, DC=com"

注意事项

  • 确保 CSV 文件中的计算机名称列标题为“Name”或“ComputerName”。
  • 确保你具有禁用计算机帐户和将计算机移动到指定 OU 的权限。

结论

使用 PowerShell 脚本禁用 Active Directory 中的计算机是一种简单而有效的自动化方法。通过遵循本指南,你可以轻松地禁用大量计算机,从而提高效率并减少人为错误的风险。

常见问题解答

  1. 如何获取计算机列表的 CSV 文件?

你可以使用以下命令导出计算机列表到 CSV 文件:

Get-ADComputer -Filter * | Select-Object Name, DNSHostName | Export-Csv "C:\temp\test.csv" -NoTypeInformation
  1. 如果禁用计算机后需要重新启用它,该如何操作?

可以使用以下命令重新启用计算机帐户:

Enable-ADAccount -Identity $computer.name
  1. 脚本是否会将计算机移动到指定的 OU?

是的,该脚本使用 Move-ADObject 命令将计算机移动到指定的 OU。

  1. 如何限制禁用计算机的权限?

你可以使用 PowerShell 委派来限制对特定命令(如 Disable-ADAccount)的访问权限。有关详细信息,请参阅 Microsoft 文档。

  1. 禁用计算机后,是否会保留其用户帐户?

不会,禁用计算机帐户不会影响其关联的用户帐户。但是,这些用户帐户可能无法访问计算机上的资源。