我在Powershell非常环保,如果这很简单,我道歉。我曾尝试使用来自用户Nick的此示例脚本,并遇到我认为AdObject应该出现的错误。我的剧本
for i in data:
i.to_sql('table1', engine, if_exists='replace', index=False)
我在下面发布了我的错误:
Import-Module ActiveDirectory
$list = Import-CSV C:\scripts\deletebulkusers.csv
forEach ($item in $list) {
$samAccountName = $item.samAccountName
#Get DistinguishedName from SamAccountName
$DN = Get-ADuser -Identity $Samaccountname -Properties DistinguishedName |
Select-Object -ExpandProperty DistinguishedName
#Remove object using DN
Remove-ADObject -Identity $DN
}
答案 0 :(得分:2)
错误表明您尝试删除的对象是容器。我怀疑您可能正在证明cmdlet是要删除的对象的容器而不是对象本身。
我认为你可以通过使用管道来简化这种情况:
Get-ADuser -Identity $Samaccountname | Remove-ADObject -WhatIf
如果-WhatIf
参数看起来符合您的预期,请将其删除。
答案 1 :(得分:2)
很高兴我可以提供帮助:)我之前已经发生过这种情况,特别是如果用户手机上有Outlook,则会将它们变成容器。如果您打开“Active Directory用户和计算机”,请选择"查看",然后选中"查看用户,联系人,组和计算机的选项作为容器"导航到对象,您将看到其中有项目。
将-recurse
参数与Remove-ADObject
一起使用是我修复它的原因。
答案 2 :(得分:2)
这是我的结尾脚本的样子。 Nick和Mark Wragg的答案都解决了我的问题。谢谢你们!
Import-Module ActiveDirectory
$list = Import-CSV C:\scripts\deletebulkusers.csv
forEach ($item in $list) {
$samAccountName = $item.samAccountName
$DN = Get-ADuser -Identity $Samaccountname | Remove-ADObject -Recursive
}