Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 仅当smtp地址存在时才列出通讯组_Powershell_Active Directory_Exchange Server_Exchange Management Shell - Fatal编程技术网

Powershell 仅当smtp地址存在时才列出通讯组

Powershell 仅当smtp地址存在时才列出通讯组,powershell,active-directory,exchange-server,exchange-management-shell,Powershell,Active Directory,Exchange Server,Exchange Management Shell,我正在尝试列出组中包含特定SMTP地址的所有组。下面是我正在使用的代码,但它输出所有内容,而不仅仅是具有指定SMTP地址的组: $temp = Get-DistributionGroup -ResultSize Unlimited foreach ($group in $temp) { if (Get-DistributionGroupMember $group | select -ExpandProperty PrimarySmtpAddress` | ForEach-Obje

我正在尝试列出组中包含特定SMTP地址的所有组。下面是我正在使用的代码,但它输出所有内容,而不仅仅是具有指定SMTP地址的组:

$temp = Get-DistributionGroup -ResultSize Unlimited 
foreach ($group in $temp) 
{ 
  if (Get-DistributionGroupMember $group | select -ExpandProperty PrimarySmtpAddress`
   | ForEach-Object {$_.PrimarySmtpAddress -match "contoso.com"}) {

    Write-Output "GroupName:$group " 
    Write-Output "GroupName:$($group.PrimarySmtpAddress) "
    Write-Output "GroupMembers:" 
    Get-DistributionGroupMember $group|ft displayname,primarysmtpaddress
  }
  else 
  {
    Write-Host "null"
  }
}

这是行不通的,因为您的if语句只是测试条件中的代码是否成功执行,并且没有理由对任何组失败。如果Foreach对象块未找到任何匹配项,则逻辑中没有使条件为false的内容。试试这个:

foreach ($group in $temp) {
  if ((Get-DistributionGroupMember $group | %{$_.PrimarySmtpAddress}) -match 'contoso\.com') {
    [...]
(Get DistributionGroupMember$group |%{$.PrimarySmtpAddress})
创建所有成员的PrimarySmtpAddress属性数组,然后if条件测试它是否匹配正则表达式(-match应用于数组将返回一个包含所有匹配元素的数组,因此,如果至少有一个元素匹配,则为true;如果数组为空,则为false)


请注意,顺便说一句,-match运算符右侧的字符串是正则表达式,而不是文字字符串。这就是我添加反斜杠的原因。在正则表达式中,
匹配任何单个字符,因此
-match'contoso.com'
将匹配字符串,如
contosom
contoso?com
,非常好,谢谢下次你的解释肯定会对我有帮助:-)