Como devo testar todos os 300 dos meus domínios aceitos para problemas de Descoberta Automática?

1

Percebi que muitos domínios estão falhando no Exchange 2013 devido a um certificado curinga inválido em seu site.

Como posso (no mínimo) escanear e testar esse tipo de falha?

Abaixo está o começo do meu roteiro, mas estou realmente enferrujado no Powershell. Alguém acha que esta é uma solução válida ou tem uma melhor?

$ErrorActionPreference = "Stop";

$domains = get-accepteddomain

foreach ($d in $domains)
{
Try
{ 
    $url = "https://$d"   
    $wc = New-Object System.Net.WebClient
    $wc.DownloadString($url) 

}
Catch
{
        $ErrorMessage = $_.Exception.Message
    $FailedItem = $_.Exception.ItemName
        Send-MailMessage -From [email protected] -To [email protected] -Subject "Invalid SSL Certificate" -SmtpServer internalsmtp.nfp.com -Body "We failed to read file $FailedItem. The error message was $ErrorMessage for domain $url"
        Break
}
}
    
por random65537 27.08.2015 / 17:12

1 resposta

1

Aqui está o script que eu criei. Eu ainda preciso de uma maneira de obter facilmente todos os endereços SMTP primários ativos, mas isso é um começo.

#This script tests the naked domain and autodiscover record for issues.
#often times a wildcard cert will cause a name mismatch, or the cert is invalid, expired, or revoked

$ErrorActionPreference = "Stop";

#todo, don't use accepted domains, only use the addresses listed as a primary on  
# a user, because that is the only domain that counts for Autodiscover.
$domains =   "a.com”, “b.com”, “b.com" 

$errors = @{}

foreach ($d2 in $domains)
{
Try
{  
    $url = "https://$d2" 
    $url  
    $wc = New-Object System.Net.WebClient
    $wc.DownloadString($url)  
}
Catch
{
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.Exception.ItemName
        $errors.Add($url, $_.Exception.Message)
}

Try
{  
    $url = "https://autodiscover.$d2" 
    $url  
    $wc = New-Object System.Net.WebClient
    $wc.DownloadString($url) 
}
Catch
{
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.Exception.ItemName
        $errors.Add($url, $errormessage)
}
}


$sb = New-Object -TypeName "System.Text.StringBuilder";

foreach ($e in $errors.keys) {
    $e2 = $errors.$e

#The remote name could not be resolved
#Could not establish trust relationship 
    $sb.AppendLine("$e had error @ $e2 " ); 
}

Send-MailMessage -From [email protected] -To [email protected] -Subject "Invalid SSL Certificate Report" -SmtpServer internalsmtp.company.com -Body $sb.tostring()
    
por 30.08.2015 / 00:08