diff --git a/README.md b/README.md index 7a24f86..a0493a9 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,30 @@ Intern wird `Resolve-DnsName` verwendet. .\dig.ps1 example.com # A-Record (Default) .\dig.ps1 MX example.com # type name .\dig.ps1 example.com MX # name type (Reihenfolge egal) -.\dig.ps1 example.com AAAA @1.1.1.1 # gegen bestimmten Server +.\dig.ps1 example.com MX -s 1.1.1.1 # gegen bestimmten Server (@-frei) +.\dig.ps1 example.com MX "@1.1.1.1" # gegen bestimmten Server (@ gequotet) .\dig.ps1 -x 8.8.8.8 # Reverse-Lookup (PTR) .\dig.ps1 example.com TXT +short # nur die Werte ausgeben ``` -Unterstützt: Record-`type`, `name`, `@server`, die Option `+short` sowie `-x` für Reverse-Lookups. +Unterstützt: Record-`type`, `name`, `@server` bzw. `-s server`, die Option `+short` sowie `-x` für Reverse-Lookups. + +### DNS-Server angeben: `@server` muss gequotet werden + +PowerShell deutet ein Argument mit führendem `@` als **Splatting-Operator** und bricht +schon beim Parsen ab (`Der Splat-Operator "@" kann nicht … verwendet werden`), bevor das +Skript überhaupt startet. Für die `@server`-Syntax daher **Anführungszeichen** verwenden: + +```powershell +.\dig.ps1 example.com MX "@8.8.8.8" +``` + +Oder die `@`-freie Alternative `-s` / `-server` nutzen: + +```powershell +.\dig.ps1 example.com MX -s 8.8.8.8 +.\dig.ps1 example.com MX -server 8.8.8.8 +``` ## `dig`-Funktion anlegen diff --git a/dig.ps1 b/dig.ps1 index 122c702..2edb015 100644 --- a/dig.ps1 +++ b/dig.ps1 @@ -11,14 +11,17 @@ Freie dig-artige Argumente: name abzufragender Name (z.B. example.com) type Record-Typ (A, AAAA, MX, TXT, NS, CNAME, SOA, SRV, PTR, ...) - @server zu verwendender DNS-Server (z.B. @8.8.8.8) + @server zu verwendender DNS-Server; in PowerShell zwingend quoten: + "@8.8.8.8" (fuehrendes @ ist sonst der Splatting-Operator) + -s server @-freie Alternative fuer den DNS-Server (auch -server) -x Reverse-Lookup (PTR) fuer eine IPv4-/IPv6-Adresse +short nur die reinen Antwortwerte ausgeben .EXAMPLE .\dig.ps1 example.com .\dig.ps1 MX example.com - .\dig.ps1 example.com MX @1.1.1.1 + .\dig.ps1 example.com MX -s 1.1.1.1 + .\dig.ps1 example.com MX "@1.1.1.1" .\dig.ps1 -x 8.8.8.8 .\dig.ps1 AAAA example.com +short #> @@ -57,6 +60,16 @@ for ($i = 0; $i -lt $rest.Count; $i++) { continue } + # -s / -server als @-freie Alternative (PowerShell deutet ein fuehrendes + # '@' sonst als Splatting-Operator und bricht schon beim Parsen ab). + if ($arg -eq '-s' -or $arg -eq '-server') { + if ($i + 1 -lt $rest.Count) { + $server = [string]$rest[$i + 1] + $i++ + } + continue + } + if ($arg -eq '+short') { $short = $true continue @@ -79,7 +92,7 @@ for ($i = 0; $i -lt $rest.Count; $i++) { } if (-not $name) { - Write-Host "Verwendung: dig.ps1 [type] name [@server] [+short] | dig.ps1 -x [+short]" + Write-Host "Verwendung: dig.ps1 [type] name [@server | -s server] [+short] | dig.ps1 -x [+short]" exit 1 }