Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从Active Directory中删除用户_Powershell_Active Directory - Fatal编程技术网

Powershell 从Active Directory中删除用户

Powershell 从Active Directory中删除用户,powershell,active-directory,Powershell,Active Directory,我的组织使用Novell作为其主目录服务。我们正在迁移到Active Directory域。我最初使用Windows 2003服务器,使用Microsoft目录服务迁移工具将所有帐户从Novell导入AD。每周我使用相同的工具从Novell导入新帐户,只选择添加或禁用用户的OU 上周我休假了。另一名管理员试图执行每周迁移,但意外地将用户导入了错误的OU。这在目录结构中创建了重复项。我现在的任务是删除那些重复的 通过从正确的目标OU导出所有用户,我创建了一个要删除的用户列表。我现在正试图使用该列表

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

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

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

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

导入模块ActiveDirectory 导入Csv。\test.Csv | ForEach对象{ 删除ADUser$\.LogonName-标识ou=ErrorOU,DC=MyDomain,DC=edu-确认:$false }

但我不能让它工作


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

我们找到了解决方案。虽然没有我想要的那么优雅,但它很管用。我当地的一位程序员想出了这段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));

“为什么不使用可识别的名称来识别帐户?”MadTechnician说,这仍然给我留下了类似的问题。如何编写脚本来删除这些帐户?嗯,
Import csv.\test.csv |选择{l='Identity';e={“CN=“+$\.LoginName+”,OU=errou,DC=MyDomain,DC=edu'}}|删除ADUser-WhatIf
运行它,如果一切看起来不错,那么删除
-WhatIf
import-csv c:\zerousers.txt | foreach {Remove-ADUser -Identity $_.samaccountname -Confirm:$false}