Files
dns_skripte/README.md
T
maierch a2482df6af 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>
2026-07-02 18:55:26 +02:00

124 lines
3.5 KiB
Markdown

# dig.ps1 — dig-artiger DNS-Lookup für PowerShell
Ein PowerShell-Skript, das die wichtigsten `dig`-Aufrufe unter Windows nachbildet.
Intern wird `Resolve-DnsName` verwendet.
## Aufrufe
```powershell
.\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 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` 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
Damit sich das Skript wie unter Linux einfach mit `dig …` (statt `.\dig.ps1 …`) aufrufen lässt,
wird eine Funktion im PowerShell-Profil angelegt.
### 1. Skript ablegen
Kopiere `dig.ps1` an einen festen Ort, z. B.:
```powershell
C:\Tools\dig.ps1
```
### 2. Profil öffnen (bei Bedarf anlegen)
```powershell
# Existiert das Profil schon?
Test-Path $PROFILE
# Falls nicht: anlegen
if (-not (Test-Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
# Profil im Editor öffnen
notepad $PROFILE
```
### 3. Funktion eintragen
Füge folgende Zeilen in die Profildatei ein und passe den Pfad an:
```powershell
function dig {
& "C:\Tools\dig.ps1" @args
}
```
`@args` reicht alle Argumente unverändert an das Skript weiter, sodass die dig-Syntax
1:1 erhalten bleibt.
### 4. Profil neu laden
```powershell
. $PROFILE
```
Danach steht `dig` in jeder neuen PowerShell-Sitzung zur Verfügung:
```powershell
dig example.com MX @1.1.1.1
dig -x 8.8.8.8 +short
```
## Ausführungsrichtlinie (ExecutionPolicy)
Wird die Ausführung von Skripten blockiert, kann sie für den aktuellen Benutzer erlaubt werden:
```powershell
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
```
`RemoteSigned` erlaubt lokal erstellte Skripte; aus dem Internet geladene Skripte müssen signiert sein.
### „Das Skript ist nicht digital signiert"
Wurde `dig.ps1` aus diesem Git-Repo geladen, markiert Windows die Datei mit einer
„Mark of the Web" (Herkunft: Internet/Netzwerk). Unter `RemoteSigned` wird die Ausführung
dann mit dem Hinweis blockiert, dass das Skript nicht digital signiert ist.
**Empfohlene Lösung** — die Markierung gezielt bei dieser Datei entfernen (Policy bleibt sicher):
```powershell
Unblock-File -Path C:\Tools\dig.ps1
```
**Einmalig ohne Policy-Änderung ausführen** — umgeht die Prüfung nur für diesen Aufruf:
```powershell
powershell -ExecutionPolicy Bypass -File C:\Tools\dig.ps1 example.com MX
```
## Hinweise
- Das Skript benötigt das Modul `DnsClient` (`Resolve-DnsName`), das unter Windows standardmäßig vorhanden ist.
- Die Standardausgabe orientiert sich am `dig`-Format mit `QUESTION`- und `ANSWER SECTION`.
- Mit `+short` werden nur die reinen Antwortwerte ausgegeben (eine pro Zeile).