SMTP 주소가있는 경우에만 메일 그룹을 나열하십시오
문제
그룹에 특정 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'
는 contososcom
및 contoso?com
와 같은 문자열을 일치시킵니다.
제휴하지 않습니다 StackOverflow