删除带有Import-CSV错误的AdObject

时间:2017-06-28 14:49:51

标签: powershell active-directory user-management

我在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
}

3 个答案:

答案 0 :(得分:2)

错误表明您尝试删除的对象是容器。我怀疑您可能正在证明cmdlet是要删除的对象的容器而不是对象本身。

我认为你可以通过使用管道来简化这种情况:

Get-ADuser -Identity $Samaccountname | Remove-ADObject -WhatIf

如果-WhatIf参数看起来符合您的预期,请将其删除。

答案 1 :(得分:2)

很高兴我可以提供帮助:)我之前已经发生过这种情况,特别是如果用户手机上有Outlook,则会将它们变成容器。如果您打开“Active Directory用户和计算机”,请选择"查看",然后选中"查看用户,联系人,组和计算机的选项作为容器"导航到对象,您将看到其中有项目。

-recurse参数与Remove-ADObject一起使用是我修复它的原因。

答案 2 :(得分:2)

这是我的结尾脚本的样子。 NickMark 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 
}