我有一个要检查的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"
}
}
即使我知道有些输入,输出也只会为我每个条目“不分组”。
答案 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
将行读入数组并使用原始条件。