从 Active Directory OU 中删除用户

问题描述 投票:0回答:1

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

上周我休假了。另一位管理员尝试执行每周迁移,但意外地将用户导入到错误的 OU。这会在目录结构中创建重复项。我现在的任务是删除那些重复的内容。

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

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

导入模块ActiveDirectory 导入-Csv 。 est.csv | ForEach-对象 { 删除-ADUser $_.LogonName -Identity ou=WRONGOU,DC=MyDomain, dc=edu -Confirm:$false }

但是我无法让它发挥作用。

更优雅的方法是比较两个 OU,如果名称出现在两个 OU 中,请将其从错误的 OU 中删除。

php powershell active-directory
1个回答
0
投票

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

$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}
© www.soinside.com 2019 - 2024. All rights reserved.