我们有票务系统为新加入者创建窗口ID,我们需要根据他们的电子邮件域将新用户添加到特定的分组中。
例如,如果用户的电子邮件地址是thomas@abc.com
,它将检查电子邮件地址是否包含@abc.com
,然后将其添加到test_group
;如果用户在组中,则跳过此步骤。
$Users = Get-ADUser -Filter * -Properties emailaddress
foreach ($user in $Users)
{
if ($user.emailaddress -match "abc.com")
{
$GroupMembers = Get-ADGroupMember -Identity "test_group" | Select -ExpandProperty SamAccountName
if ($User.SamAccountName -NotIn $GroupMembers)
{
Add-ADGroupMember -Identity "test_group" -Members $User
}
}
}
但是在我执行后,我遇到了如下错误
必须在"-"运算符的右侧提供值表达式。
行:9 字符:42表达式或语句中出现意外的标记"NotIn"。
行:9 字符:43表达式或语句中出现意外标记"组成员"。
行:9 字符:49
非常感谢您提前提供的帮助。
问题是您在代码中使用了-NotIn
比较运算符。
但是,此运算符仅在PowerShell 3中引入,不适用于您的PoSh版本。
可以在 PowerShell v2.x 及更高版本中使用 -NotContains
。但是,您将需要撤销支票。使用 -NotIn,您可以将值与集合进行比较,而使用 -NotContains
则通过将集合与值进行比较来执行相反的操作。