我可以从标准 PowerShell 脚本运行 AD 命令吗?

我可以从标准 PowerShell 脚本运行 AD 命令吗?

我正在编写一个脚本以在系统准备后运行。

它应该检查机器是否在网络上,如果是,那么它应该查询 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

相关内容