DNS-Server: -s/-server als @-freie Alternative + @server quoten

PowerShell deutet fuehrendes @ als Splatting-Operator; @server muss
daher gequotet werden. Zusaetzlich -s/-server-Parameter ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
maierch
2026-07-02 18:55:26 +02:00
parent 81b38c024d
commit a2482df6af
2 changed files with 36 additions and 5 deletions
+20 -2
View File
@@ -9,12 +9,30 @@ Intern wird `Resolve-DnsName` verwendet.
.\dig.ps1 example.com # A-Record (Default) .\dig.ps1 example.com # A-Record (Default)
.\dig.ps1 MX example.com # type name .\dig.ps1 MX example.com # type name
.\dig.ps1 example.com MX # name type (Reihenfolge egal) .\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 -x 8.8.8.8 # Reverse-Lookup (PTR)
.\dig.ps1 example.com TXT +short # nur die Werte ausgeben .\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 ## `dig`-Funktion anlegen
+16 -3
View File
@@ -11,14 +11,17 @@
Freie dig-artige Argumente: Freie dig-artige Argumente:
name abzufragender Name (z.B. example.com) name abzufragender Name (z.B. example.com)
type Record-Typ (A, AAAA, MX, TXT, NS, CNAME, SOA, SRV, PTR, ...) 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 <ip> Reverse-Lookup (PTR) fuer eine IPv4-/IPv6-Adresse -x <ip> Reverse-Lookup (PTR) fuer eine IPv4-/IPv6-Adresse
+short nur die reinen Antwortwerte ausgeben +short nur die reinen Antwortwerte ausgeben
.EXAMPLE .EXAMPLE
.\dig.ps1 example.com .\dig.ps1 example.com
.\dig.ps1 MX 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 -x 8.8.8.8
.\dig.ps1 AAAA example.com +short .\dig.ps1 AAAA example.com +short
#> #>
@@ -57,6 +60,16 @@ for ($i = 0; $i -lt $rest.Count; $i++) {
continue 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') { if ($arg -eq '+short') {
$short = $true $short = $true
continue continue
@@ -79,7 +92,7 @@ for ($i = 0; $i -lt $rest.Count; $i++) {
} }
if (-not $name) { if (-not $name) {
Write-Host "Verwendung: dig.ps1 [type] name [@server] [+short] | dig.ps1 -x <ip> [+short]" Write-Host "Verwendung: dig.ps1 [type] name [@server | -s server] [+short] | dig.ps1 -x <ip> [+short]"
exit 1 exit 1
} }