我正在编写一个脚本来运行post-sysprep。
它应该检查机器是否在networking上,如果是,那么它应该查询AD是否有一个计算机帐户存在与它的服务标签(我们使用这些作为机器的主机名)。
如果确实存在,则应删除该帐户并将该机器重新join域。
我有大部分的脚本运行,但需要运行以下内容:
Remove-ADComputer -Identity $distinguishedName
我怎样才能从“标准”PowerShell环境中运行这个? 我不想使用AD模块。
(顺便说一下,我正处于2000/03混合模式,因为我们正在升级到2008年)
我是PowerShell的新手,所以如果我完全忽略了这一点,请温和!
谢谢,
本
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)}
如果您想从AD模块运行命令(如Remove-ADComputer),您将不得不导入该模块。
您可以尝试使用dsrm.exe实用程序删除该对象。 有关dsrm.exe的使用详情,请参阅http://technet.microsoft.com/en-us/library/cc755841(WS.10).aspx 。
谢谢,马克
是的,为什么复杂的事情只是使用dsrm,记住ps是一个完整的cli,你不必做任何事情来让dsrm工作。
所以在PowerShell中,它看起来像这样
ps> dsrm $ distinguishedName