【问题标题】:Deleting users from Active Directory OU从 Active Directory OU 中删除用户
【发布时间】:2016-02-17 18:00:16
【问题描述】:

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

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

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

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

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

但我无法让它工作。

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

【问题讨论】:

  • 为什么不用distinguishedName来识别账户?
  • @TheMadTechnician 仍然给我留下了类似的问题。我将如何编写脚本来删除这些帐户?
  • 嗯,Import-csv .\test.csv | Select @{l='Identity';e={"CN="+$_.LoginName+",OU=WRONGOU,DC=MyDomain,DC=edu"}}|Remove-ADUser -WhatIf 运行它,如果一切看起来都不错,然后删除 -whatif

标签: powershell active-directory


【解决方案1】:

我们找到了解决方案。没有我想要的那么优雅,但它确实有效。我的一位本地程序员想出了这个 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}

【讨论】:

    猜你喜欢
    • 2017-08-15
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多