使用PowerShell基于现有Active Directory帐户删除目录

时间:2015-03-26 19:35:41

标签: powershell active-directory

我正在寻找一种方法来使用PowerShell从特定OU中的Active Directory生成帐户名列表,然后将该列表与从网络共享生成的另一个列表进行比较,该网络共享包含他们连接到的用户的主文件夹登录。

这样做的目的是比较两个列表,然后 DELETE 从Active Directory中获取的帐户名列表中 NOT 的任何文件夹。

我将使用的OU嵌套为:

domainname.org | People | Internal | Users 

此OU有大约25,000个名称(每个用户的ID号)。

目录结构有点复杂。它分为三个主目录,每个目录都有位置名称,然后包含用户的主文件夹。

一个例子是:

\\user-storage\Users\Division1\LOC1\USERID

其中USERID是OU中列出的名称。

此OU中的所有用户也在完全相同的组中,因此如果这样可以更容易或以任何方式提供帮助,那么这也是一种方法。

1 个答案:

答案 0 :(得分:1)

我会使用正则表达式匹配。很确定即使有2500件物品,你仍然可以做到这一点。

$UserNames = Get-ADUser -Filter * -SearchBase "OU=Users,OU=Internal,OU=People,DC=domainname,DC=ORG" | Select -ExpandProperty samaccountname
$UserRegex = ($UserNames | ForEach{[RegEx]::Escape($_)}) -join "|"
Get-ChildItem -Path "\\user-storage\Users\*\*\*" -Directory | Where{$_.Name -notmatch $UserRegex} | Remove-Item -Force -WhatIf

这将查看\ user-storage \ users文件夹深处的所有文件夹5级别,并根据用户列表进行检查。如果没有找到它会递归删除它。我在其上放了-WhatIf,以便您可以在不丢失数据的情况下对其进行测试。 -Force会删除该文件夹,即使该文件夹中仍有内容。