Powershell - Get-AdUser:排除数组中的用户

时间:2015-04-03 20:04:34

标签: powershell

我想生成一个用户列表,但名称列表除外。此排除列表每周更改一次。

$exclude = @('smith, bob', 'jones, tom', ...)
$csvmaster = @()
$uacct = 'User Account'
$UserID = 'User ID'
$lastname = 'Last Name'
... other attributes

$ulist = get-aduser -filter {enabled -eq 'true'} -properties * | ? {$_.Distinguishedname -like '*Standard User*' -and $_.title -ne $null -and $_.employeenumber -ne $null}  

foreach ($u in $ulist)
{
    if ($u.name -notmatch $exclude) {
    $csvline = New-Object System.Object
    $csvline | Add-Member -MemberType NoteProperty -name $UserID -value $u.EmployeeNumber
    $csvline | Add-Member -MemberType NoteProperty -name $lastname -value $u.surname
    ...other attributes
    $csvmaster += $csvline
    }
}  
...Output to csv  

当我运行它时,我想要排除的名称仍然会进入列表。我也试过-notcontains并将它们排除在外:

$ulist = get-aduser -filter {enabled -eq 'true'} -properties * | ? {$_.Distinguishedname -like '*Standard User*' -and $_.title -ne $null -and $_.employeenumber -ne $null -and $_.name -notmatch $exclude}  

这表现方式相同。
欢呼声。

1 个答案:

答案 0 :(得分:0)

所以我认为我的问题是Get-ADUser接受输入值的方式。和/或我的逻辑一般。我将代码更改为:

$exclude = @( ..list..of..names..)
$csvline = @()
$ulist = get-aduser ...  

foreach ($u in $ulist)
{
    if ($exclude -notcontains $u.name)
    {
        ...
        $csvline += $u.name
    }    
}   

它正在做我需要的。