문제

그룹에 특정 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"
  }
}
.

도움이 되었습니까?

해결책

명령문이 조건의 코드가 성공적으로 실행되는지 여부를 테스트하는지 여부를 테스트하는지 여부를 테스트하고 그룹에 대해 실패 할 것입니다. foreach-object 블록이 어떤 일치 항목을 찾지 못하면 조건을 false로 만드는 논리에 아무것도 없습니다. 이것을 시도하십시오 :

foreach ($group in $temp) {
  if ((Get-DistributionGroupMember $group | %{$_.PrimarySmtpAddress}) -match 'contoso\.com') {
    [...]
.

(Get-DistributionGroupMember $group | %{$_.PrimarySmtpAddress}) primarysmtpaddress 등록 정보의 배열을 생성 한 다음 조건이 regex ( -match )와 일치하는지 여부를 테스트합니다. 배열에 적용되는 것은 일치하는 모든 요소의 배열을 반환하므로 하나 이상의 요소가 일치하는 경우 어레이가 비어 있으면 false가됩니다).

-match 연산자의 오른쪽에있는 문자열이 리터럴 문자열이 아닌 regex 입니다. 그래서 내가 백 슬래시를 추가 한 이유입니다. regex에서 .는 단일 문자와 일치하므로 -match 'contoso.com'contososcomcontoso?com와 같은 문자열을 일치시킵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top