간단한 If/Else 블록을 사용하여 오류를 catch하도록 설정된 코드 블록을 실행하고 있습니다. Try/Catch를 사용하지만 일반적으로 Exchange 2010 PS 환경에서는 Try/Catch 기능을 대부분 사용할 수 없습니다. (고객의 문제이기 때문에 업데이트하거나 변경할 수 없습니다. 시스템이고 그들은 내키지 않는다).
Add-DistributionGroupMember cmdlet을 -ErrorAction "Stop"으로 설정하면 코드가 예상대로 작동하지만 매번 고객에게 오류가 출력되므로 문제가 발생합니다. 가능한 모든 오류가 상세한 출력 파일을 통해 처리되므로 이는 사실상 단순한 노이즈입니다.
-ErrorAction "SilentlyContinue"로 설정하면 오류 텍스트가 표시되지 않지만 예상대로 $ Error [0] 지점에 오류가 추가되지 않습니다. -ErrorAction "Ignore"도 마찬가지입니다. 이 코드에서는 오류가 발생할 때마다 오류를 $ Error 변수에 추가해야합니다. 여기
코드입니다 :$ListMembershipsIn | % {
$Alias = $_.Alias
$Member = $_.Member
Add-DistributionGroupMember -Identity $Alias -Member $Member -Confirm:$false -ErrorAction Stop
if($Error[0] -match "The recipient"){
Write-Host -ForegroundColor Yellow "Already a member"
Add-Content -Path $OutputPath -Value "$($Alias),$($Member),Group already contains Member"
}
elseif($Error[0] -match "couldn't be found"){
Write-Host -ForegroundColor Yellow "not found"
Add-Content -Path $OutputPath -Value "Group does not exist or cannot be found,$($Alias),N/A"
}
elseif($Error[0] -match "couldn't find"){
Write-Host -ForegroundColor Yellow "not found"
Add-Content -Path $OutputPath -Value "Member does not exist or cannot be found,$($Alias),$($Member)"
}
elseif($Error[0] -match "There are Multiple"){
Add-Content -Path $OuputPath -Value "Member name matches too many recipient - Add Member Manually,$($Alias),$($Member)"
}
else{
Add-Content -Path $OutputPath -Value "Member Successfully Added to Group,$($Alias),$($Member)"
Write-Host -ForegroundColor Green "Throw Flag here"
}
}
2010 년 제품이 PowerShell 2.0을 사용하고있을 가능성이 있습니다. PowerShell 3.0은 Server 2012에 포함되었습니다. 고객이 열어두고있는 모든 보안 허점을 생각해보십시오. https://biztechmagazine.com/article/2017/01/how-guard-against-threats-microsoft-powershell-exploits – lit
다행히도이 모든 작업은 Exchange Online으로 이전하여 모든 이전 서버를 제거합니다. . 위험은 확실히 나를 잃지 않습니다. –