返回
使用 PowerShell 高效禁用 Active Directory 中的计算机
windows
2024-03-22 23:31:53
通过 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"
}
步骤分解
- 导入 Active Directory 模块:
Import-Module ActiveDirectory
- 从 CSV 文件导入计算机列表:
$computers = import-csv "C:\temp\test.csv"
- 使用
ForEach-Object
管道逐个处理计算机:$computers | ForEach-Object { }
- 禁用计算机帐户:
Disable-ADAccount -Identity $_.name
,其中$_.name
获取当前计算机的名称。 - 将计算机移动到“已禁用计算机”OU:
Move-ADObject -Identity $_.name -TargetPath "OU=Disabled computers, DC=domain, DC=com"
注意事项
- 确保 CSV 文件中的计算机名称列标题为“Name”或“ComputerName”。
- 确保你具有禁用计算机帐户和将计算机移动到指定 OU 的权限。
结论
使用 PowerShell 脚本禁用 Active Directory 中的计算机是一种简单而有效的自动化方法。通过遵循本指南,你可以轻松地禁用大量计算机,从而提高效率并减少人为错误的风险。
常见问题解答
- 如何获取计算机列表的 CSV 文件?
你可以使用以下命令导出计算机列表到 CSV 文件:
Get-ADComputer -Filter * | Select-Object Name, DNSHostName | Export-Csv "C:\temp\test.csv" -NoTypeInformation
- 如果禁用计算机后需要重新启用它,该如何操作?
可以使用以下命令重新启用计算机帐户:
Enable-ADAccount -Identity $computer.name
- 脚本是否会将计算机移动到指定的 OU?
是的,该脚本使用 Move-ADObject
命令将计算机移动到指定的 OU。
- 如何限制禁用计算机的权限?
你可以使用 PowerShell 委派来限制对特定命令(如 Disable-ADAccount
)的访问权限。有关详细信息,请参阅 Microsoft 文档。
- 禁用计算机后,是否会保留其用户帐户?
不会,禁用计算机帐户不会影响其关联的用户帐户。但是,这些用户帐户可能无法访问计算机上的资源。