Zbieram statystyki dotyczące środowiska Exchange i muszę zbierać statystyki dotyczące wszystkich używanych domen DNS.W jaki sposób można przekształcić złożoną tablicę Powershell na dysk w celu przetworzenia przez drugi skrypt?
Jest to długa i intensywna operacja, która może zająć dużo czasu. Chcę zachować te wartości na dysku, więc mogę uruchomić postprocesor w podsumowaniu.
Jak zmienić skrypt, który napisałem poniżej, aby móc uruchomić post-procesor?
$dict = @{}
$AcceptedDomains = Get-AcceptedDomain | select domainname
foreach($ad in $AcceptedDomains)
{
$tmp = $dict[$ad.DomainName]
if ($tmp -eq $null)
{
$obj1 = @{CountPrimary = 0; CountWindows =0; CountSecondary = 0; IsAcceptedDomain = 0; DNS_MX = ""; DNS_SRV= ""; SSL=""}
$dict.Add($ad.DomainName.ToString(), $obj1)
}
$dict[$ad.DomainName.ToString()].IsAcceptedDomain = 1
}
foreach($currentmb in get-mailbox -resultsize unlimited|select PrimarySMTPAddress, WindowsEmailAddress, EmailAddresses)
{
$domName = $currentmb.PrimarySmtpAddress.ToString().Split("@")[1].ToString();
$tmp = $dict[ $domName]
if ($tmp -eq $null)
{
$obj1 = @{CountPrimary = 0; CountWindows =0; CountSecondary = 0; IsAcceptedDomain = 0; DNS_MX = ""; DNS_SRV= ""; SSL=""}
$dict.Add($domName, $obj1)
}
$dict[$domName].CountPrimary+= 1
$domName = $currentmb.WindowsEmailAddress.ToString().Split("@")[1].ToString();
$tmp = $dict[ $domName]
if ($tmp -eq $null)
{
$obj1 = @{CountPrimary = 0; CountWindows =0; CountSecondary = 0; IsAcceptedDomain = 0; DNS_MX = ""; DNS_SRV= ""; SSL=""}
$dict.Add($domName, $obj1)
}
$dict[$domName].CountWindows += 1
$secondaries = New-Object System.Collections.ArrayList($null)
$currentMBSmtp = $currentMB.EmailAddresses | where {$_.PrefixString -eq "SMTP"} | select SMTPAddress
foreach($smtp1 in $currentMBSmtp)
{
$smtp1Domain = $smtp1.SmtpAddress.ToString().Split("@")[1].ToString()
$secondaries.Add($smtp1Domain)
}
foreach($domName1 in $secondaries | select -unique)
{
$tmp = $dict[ $domName1]
if ($tmp -eq $null)
{
$obj1 = @{CountPrimary = 0; CountWindows =0; CountSecondary = 0; IsAcceptedDomain = 0; DNS_MX = ""; DNS_SRV= ""; SSL=""}
$dict.Add($domName1, $obj1)
}
$dict[$domName1].CountSecondary += 1
}
}
Jeśli można powiedzieć od zastępcze, zamierzam patrzeć na rekordy MX, CERT SSL i innych aspektów każdej domeny DNS znajduje.
Celem jest uzyskanie wystarczających informacji o używanych domenach, aby w razie potrzeby można było nadać priorytet każdej domenie.
Tablica $dict
gdy wysłany na ekran wygląda następująco: (Domeny obcięty do prywatności)
oup.com {DNS_SRV, CountSecondary, CountWindows, IsAcceptedDomain, DNS_MX, SSL, CountPrimary}
isorygroup... {DNS_SRV, CountSecondary, CountWindows, IsAcceptedDomain, DNS_MX, SSL, CountPrimary}
ces.com {DNS_SRV, CountSecondary, CountWindows, IsAcceptedDomain, DNS_MX, SSL, CountPrimary}
nc.net {DNS_SRV, CountSecondary, CountWindows, IsAcceptedDomain, DNS_MX, SSL, CountPrimary}
pojedynczy obiekt wygląda tak:
[PS] C:\scripts>$dict["sol.com"]
Name Value
---- -----
DNS_SRV
CountSecondary 3
CountWindows 0
IsAcceptedDomain 0
DNS_MX
SSL
CountPrimary 0
'Export-Clixml' /' Import-Clixml' – PetSerAl
@PetSerAl - Niesamowite dzięki! – LamonteCristo
Proszę @PetSerAl umieścić go jako odpowiedź. – JPBlanc