我正在编写一个脚本以在系统准备后运行。
它应该检查机器是否在网络上,如果是,那么它应该查询 AD 以查看是否存在具有其服务标签的计算机帐户(我们将这些用作机器的主机名。)
如果确实存在,它应该删除该帐户并将机器重新加入域。
我已经运行了大部分脚本,但需要运行以下命令:
Remove-ADComputer -Identity $distinguishedName
如何从“标准” powershell 环境运行它?我不想使用 AD 模块。
(顺便说一下 - 我处于混合模式 2000/03 域中,因为我们正在升级到 2008)
我是 PowerShell 的新手,所以如果我完全没有理解要点,请多包涵!
谢谢,
本
答案1
DSRM 也能正常工作。
但是,如果您想保持 100% 使用 PowerShell,则可以使用 ADSI 提供程序在 PowerShell 中本地完成此操作,而无需模块。
$computer = "computername"
$dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$root = $dom.GetDirectoryEntry()
$search = [System.DirectoryServices.DirectorySearcher]$root
$search.filter = "(&(objectclass=computer)(name=$computer))"
$search.findall() | foreach-object{$_.GetDirectoryEntry() } | foreach-object{$_.DeleteObject(0)}
答案2
如果您想从 AD 模块运行命令(例如 Remove-ADComputer),您将必须导入该模块。
您可以尝试使用 dsrm.exe 实用程序删除该对象。请参阅http://technet.microsoft.com/en-us/library/cc755841(WS.10).aspx有关 dsrm.exe 的使用详情。
谢谢,马克
答案3
是的,为什么要让事情变得复杂,只需使用 dsrm,记住 ps 是一个完整的命令行,你不需要做任何事情就可以让 dsrm 工作。
所以在 powershell 中它看起来像这样
ps>dsrm $distinguishedName