search
Categories
Sponsors
VirtualMetric Hyper-V Monitoring, Hyper-V Reporting
Archive
Blogroll

Badges
MCSE
Community

Cozumpark Bilisim Portali
Posted in Windows Powershell, Windows Server | No Comment | 3,214 views | 03/10/2009 22:14

Powershell üzerinden DNS kullanarak kontrol yaptırdığım scriptime, SPF desteğini ekleyerek bir üst sürüme çıkardım. Şuan sadece size SPF kayıtlarını sunuyor. Fazla vaktim olmadığı için SPF kayıtlarının kontrol ettirmedim.

# PTR Record Test
# Yusuf Ozturk – MCSE+S
# http://www.yusufozturk.info

$local:ErrorActionPreference = “SilentlyContinue” # Error Action Preference

[void][System.Reflection.Assembly]::LoadWithPartialName(‘Microsoft.VisualBasic’)

$DomainName = [Microsoft.VisualBasic.Interaction]::InputBox(“Domain Name:”, “”, “bing.com”)

$SPFRecord = Nslookup -type=TXT $DomainName 4.2.2.2 | Out-File C:\Results.txt
$SPFRecord = Select-String “C:\Results.txt” -Pattern ‘v=spf1’
$SPFRecord = ($SPFRecord.Get_Line()).Remove(0,1)
If ($SPFRecord -eq $Null)
{
$SPFRecord = “SPF record not exist.”
}

$Hostnames = Nslookup -type=mx $DomainName 4.2.2.2 | Out-File C:\Results.txt
$Hostnames = Select-String “C:\Results.txt” -Pattern ‘mail exchanger’
Foreach ($Hostname in $Hostnames)
{
$Hostname = ($Hostname.Get_Line() -Replace “\s”,””)
$Hostname = [regex]::matches($Hostname, “mailexchanger=(\w+).(\w+).(\w+).(\w+)”)
$Hostname = [string]$Hostname
$Hostname = $Hostname.Remove(0,14)

$IPAddress = [System.Net.Dns]::GetHostAddresses(“$Hostname”)

$Status = “1”

Foreach ($IP in $IPAddress)
{
$ReverseDNS = Nslookup $IP | Out-File C:\Results.txt
$ReverseDNS = Select-String “C:\Results.txt” -Pattern ‘Name’
$ReverseDNS = ($ReverseDNS.Get_Line() -Replace “\s”,””).Remove(0,5)

Write-Host Hostname: $Hostname
Write-Host IP Address: $IP
Write-Host SPF Record: $SPFRecord

If ($IP -like “192.168*”)
{
Write-Host PTR Record: localhost
}
Else
{
Write-Host PTR Record: $ReverseDNS
}

If ($ReverseDNS -eq “$Hostname”)
{
Write-Host Result: Matched! -ForegroundColor Green
}
Else
{
Write-Host Result: Not Matched! -ForegroundColor Red
$Status = “0”
}
Write-Host ” ”
}
}

Remove-Item C:\Results.txt

Gereksiz olarak eklemiş olduğum Pause function kaldırıldı. Ayrıca artık C sürücüsü içersinde bir dosya bırakmıyoruz, çıkarken siliyor :)