检查csv中的用户是否属于电子邮件组

时间:2018-09-05 02:00:18

标签: powershell active-directory

我有一个要检查的SamAccountName csv是否在某个组中。到目前为止,我有这个:

Import-Module ActiveDirectory
$users = Import-Csv -path C:\path\to\csv
$group = "groupname"
$members = Get-ADGroupMember -Identity $group -Recursive |
             Select -ExpandProperty SamAccountName
ForEach ($user in $users) {
    If ($members -contains $user) {
        Write-Host $user
    } Else {
        Write-Host "Not in group"
    }
}

即使我知道有些输入,输出也只会为我每个条目“不分组”。

1 个答案:

答案 0 :(得分:0)

Import-Csv cmdlet输出自定义对象,其 properties 对应于输入CSV文件的列值

因此,根据定义,您的$users变量不直接包含SAM帐户名 ,它包含自定义的对象其中之一 properties 包含感兴趣的值。

例如,如果C:\path\to\csv包含以下内容:

SamAccountName,More,Stuff
user1,foo,bar
user2,baz,bam
...

您的条件必须为:

if ($member -contains $user.SamAccountName) { # ...

如果您的CSV文件缺少标题行,或者只是一个纯文本文件,其值包含(暗示)单个列,则可以使用-Header指定一个;例如,如果C:\path\to\csv仅包含:

user1
user2
...

您可以使用$users = Import-Csv -LiteralPath C:\path\to\csv -Header SamAccountName并使用与上述相同的条件,或者更简单地说,如果只有一列,请使用
$users = Get-Content C:\path\to\csv将行读入数组并使用原始条件。