尝试禁用AD中不是CSV的用户

时间:2014-11-05 14:22:19

标签: powershell csv active-directory

我一直试图在论坛中找到类似的东西,但这就是把我绑起来的逻辑 - 把它们放在一起。

我有一个AD,我有一个用户的CSV,应该在特定的OU中。我想将OU中的用户与CSV进行比较,而不是CSV中的用户,我想禁用它们并将它们移动到不同的OU。

我是Powershell的新手,并且在这方面有点艰难。让我得到的是比较和IF-Then逻辑......我只是无法正确理解语法。我尝试过几个选项......这就是我现在所拥有的选择

Import-Module ActiveDirectory
$path     = "f:\aDMGMT\"
$logpath = "f:\admgmt\logs\diable_ad_users.log"
$userfile  = $path + "\files\ad_currentemployees.csv"
$location = "OU=Faculty,OU=People,DC=mydomain,DC=com"
$disabledou = "OU=disabledemployees,OU=Disabled,DC=mydomain,DC=com"
$AD_users =  Get-ADUser -Filter * -SearchBase "OU=Faculty,OU=People,DC=mydomain,DC=com" | select -ExpandProperty SamAccountName

$sams = $userfile | Select-Object -ExpandProperty NameUnique #the
Compare-Object $AD_users $sams | Out-File $logpath

但是可用的标签是includeequal和excludedifferent之类的东西......但是不包括在内......而且我怎么只在一边做呢?

帮助!

2 个答案:

答案 0 :(得分:0)

您可以做的是使用where过滤结果到SideIndicator子句中。

Compare-Object $AD_users $sams | 
    Where-Object{$_.SideIndicator -eq "<="} | 
    Select-Object -expandproperty inputobject

使用您需要的方向"<=""=>",然后管道输入Select-Object以恢复您要过滤的输入对象。如果您的对象是多维的,那么最后一部分会更重要。

我将尝试使用真实数据,因为这只是经过严格测试但应该有效。

答案 1 :(得分:0)

我重新思考了我的逻辑并提出了这个问题。它运作得很好。

Import-Module ActiveDirectory -ErrorAction Stop
$path       = "f:\aDMGMT\"
$date       = Get-Date
$logdate    = Get-Date -UFormat "%y%m%d"
$log        = $path+"\logs\diable_ad_users_"+$logdate+".log"
$userfile   = $path + "\files\ad_currentemployees.csv"
$location   = "OU=employees,OU=People,DC=myorg,DC=com"
$disabledou = "OU=disabledemployees,OU=Disabled,DC=myorg,DC=com"
$AD_users   =  Get-ADUser -Filter * -SearchBase "OU=employees,OU=People,DC=myorg,DC=com" | select -ExpandProperty SamAccountName
$sams       = Import-csv $userfile | select nameunique

ForEach ($user in $AD_users)
{
$exists = $sams.nameunique -contains $user # clean output for array w/ header vs. array without header demands .namunique
If(!$exists)
{
    Get-ADUser -Identity $user | Move-ADObject -targetpath $disabledou
    Disable-ADAccount -Identity $user
}

}