从Active Directory OU中删除用户

时间:2016-02-17 18:00:16

标签: powershell active-directory

我的组织使用Novell作为其主要目录服务。我们正在迁移到Active Directory域。我最初使用Windows 2003 Server使用Microsoft目录服务迁移工具将Novell中的所有帐户导入AD。每周我使用相同的工具从Novell导入新帐户,并仅选择已添加或禁用用户的OU。

上周我离开了。另一位管理员尝试进行每周迁移,并意外将用户导入错误的OU。这在目录结构中创建了重复项。我现在的任务是删除那些重复的。

我已经通过从正确的目标OU导出所有用户来创建要删除的用户列表。我现在正尝试使用该列表来定位不正确的OU并删除这些LogonNames。我无法使用SamAccountName,因为有些帐户超过20个字符,而SamAccountName在所有重复项的末尾都有0。

到目前为止我在PowerShell中所拥有的是

Import-Module ActiveDirectory Import-Csv。\ test.csv | ForEach-Object {   Remove-ADUser $ _。LogonName -Identity ou = WRONGOU,DC = MyDomain,dc = edu -Confirm:$ false }

但我不能让这个工作。

更优雅的是比较两个OU的方法,如果名称同时出现,则从错误的OU中删除它。

1 个答案:

答案 0 :(得分:0)

我们找到了解决方案。不像我希望的那样优雅,但它有效。我的一位当地编码员提出了这个PHP代码。它提取以0结尾的用户,然后将它们放在单独的csv文件中。

<?php $d = array(); $csv = array_map('str_getcsv', file('users.csv'));foreach($csv as $i){
if(substr($i[0], -1) == '0'){
    $d[] = '"' . $i[0] . '"';
}}file_put_contents('zerousers.txt', implode(PHP_EOL, $d));

从那里你只需要运行标准删除命令

import-csv c:\zerousers.txt | foreach {Remove-ADUser -Identity $_.samaccountname -Confirm:$false}