我的目标是列出属性proxyAddresses不包含邮件属性值的所有ADusers。
我的第一步是让所有同时具有这两个值的用户填写:
$ADUser = Get-ADUser -Properties Name,Mail,proxyAddresses -Filter {proxyAddresses -like '*' -and mail -like '*'}
然后我尝试通过一个foreach循环和一个完整的if语句来运行它
$result = foreach ($User in $ADUser){
$proxystring = $User.proxyAddresses
$Mailstring = $User.Mail
$Mailstring = $Mailstring.ToString()
if ($proxystring -contains '*$Mailstring*'){
Write-Host 'läuft'
}
else{
Write-Output($User).Name
}
}
在if语句中我尝试
if ($proxystring -contains '*$Mailstring*')
if ($proxystring -contains $Mailstring)
if ($proxystring -like $Mailstring)
if (($proxystring).contains($Mailstring))
正如在代码的主要部分所看到的,我还试图将它传递给一个字符串,因为我认为格式可能是一个问题。
我所看到的每一个变量都只与字符串匹配,而不是与其他变量匹配。
如果有人碰巧知道我的错误是什么,我将不胜感激。
1条答案
按热度按时间mqkwyuun1#
您需要从
proxyAddresses
中的每个地址中删除前面的SMTP:
/smtp:
,这样才能正常工作:您也可以使用
-notcontains
来大大简化上面的代码,但这需要将smtp:
前置到用户的mail
属性: