Freie und belegte Rufnummern einer OpenScape 4000 / HiPath 4000 als Excel-Liste.
Export the dial plan / numbering plan of a Unify OpenScape 4000 or HiPath 4000 PBX to
Excel — one row per extension, marked free, assigned or undefined. Reads the terminal
output of AMO WABE (ABFRAGEN-WABE / DISPLAY-WABE). Windows PowerShell 5.1 and
PowerShell 7.x, no Microsoft Excel required.
PowerShell-Skript, das die Textmitschrift des AMO WABE (Wahlbewertung) einliest und daraus eine Rufnummernbelegungsliste erzeugt — eine Zeile je Rufnummer, mit dem Status belegt, frei oder undefiniert.
Läuft unter Windows PowerShell 5.1 und PowerShell 7.x, mit oder ohne installiertes Microsoft Excel.
irm https://raw.githubusercontent.com/bhuertgen/os4k-wabe2excel/main/install.ps1 | iexDer Installer legt das Skript unter %LOCALAPPDATA%\Programs\os4k-wabe2excel ab,
nimmt den Ordner in den PATH auf und installiert bei Bedarf das Modul
ImportExcel.
Mit eigenen Optionen:
$u = 'https://raw.githubusercontent.com/bhuertgen/os4k-wabe2excel/main/install.ps1'
& ([scriptblock]::Create((irm $u))) -InstallDir 'C:\Tools' -NoPath| Installer-Option | Bedeutung |
|---|---|
-InstallDir <Pfad> |
anderes Zielverzeichnis |
-Ref <Branch|Tag> |
bestimmte Version laden (Standard main) |
-NoPath |
PATH nicht ändern |
-NoModule |
ImportExcel nicht installieren |
-Uninstall |
Skript, Verzeichnis und PATH-Eintrag entfernen |
Auf vielen Firmenrechnern ist das Ausführen heruntergeladener Skripte eingeschränkt. Das Skript funktioniert auch völlig ohne Installer — es hat keine Abhängigkeiten außer optional ImportExcel.
Variante 1 — nur die eine Datei
-
Convert-WabeToExcel.ps1 öffnen, auf Raw klicken und mit Speichern unter ablegen — oder direkt:
$url = 'https://raw.githubusercontent.com/bhuertgen/os4k-wabe2excel/main/Convert-WabeToExcel.ps1' Invoke-WebRequest -Uri $url -OutFile .\Convert-WabeToExcel.ps1 -UseBasicParsing
-
Datei entsperren — Windows markiert Downloads als „aus dem Internet":
Unblock-File .\Convert-WabeToExcel.ps1
-
Aufrufen:
.\Convert-WabeToExcel.ps1 -Help
Variante 2 — komplettes Repo als ZIP
-
Auf der Repo-Seite auf Code → Download ZIP, oder:
$zip = 'https://github.com/bhuertgen/os4k-wabe2excel/archive/refs/heads/main.zip' Invoke-WebRequest -Uri $zip -OutFile "$env:TEMP\os4k-wabe2excel.zip" -UseBasicParsing Expand-Archive "$env:TEMP\os4k-wabe2excel.zip" -DestinationPath "$env:LOCALAPPDATA\Programs" -Force
-
Entpackten Ordner (
os4k-wabe2excel-main) nach Belieben umbenennen und die Skripte entsperren:Get-ChildItem "$env:LOCALAPPDATA\Programs\os4k-wabe2excel-main" -Recurse -Filter *.ps1 | Unblock-File
Variante 3 — per Git
git clone https://github.com/bhuertgen/os4k-wabe2excel.git# einmalig für den eigenen Benutzer, keine Administratorrechte nötig
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
# oder ohne dauerhafte Änderung, nur für diesen Aufruf
powershell -ExecutionPolicy Bypass -File .\Convert-WabeToExcel.ps1 -Path .\zentrale-wabe.txt# mit Internetzugang
Install-Module ImportExcel -Scope CurrentUser
# für einen Rechner ohne Internet: auf einem anderen PC herunterladen ...
Save-Module ImportExcel -Path C:\Transfer
# ... den Ordner ImportExcel übertragen und ablegen unter
# %USERPROFILE%\Documents\WindowsPowerShell\Modules (PowerShell 5.1)
# %USERPROFILE%\Documents\PowerShell\Modules (PowerShell 7.x)Ohne ImportExcel greift das Skript automatisch auf ein installiertes Excel (COM) zurück
und schreibt notfalls CSV — prüfen mit Convert-WabeToExcel.ps1 -CheckOnly.
Am AMO-Terminal (oder per Terminalprogramm mit Mitschnitt in eine Datei):
ABFRAGEN-WABE:TYP=ALLG,WABE=0&&15; (deutschsprachige Anlage)
DISPLAY-WABE:TYPE=ALLG,WABE=0&&15; (englischsprachige Anlage)
Der Parameter WABE=0&&15 ist wichtig — ohne ihn liefert die Anlage nur die
WABE-gruppenunabhängigen Einträge. Die Mitschrift als Textdatei speichern, Kodierung
ist beliebig (ANSI/Latin-1 und UTF-8 werden erkannt).
# eine Anlage — Ausgabedatei und Blattname werden abgeleitet
Convert-WabeToExcel.ps1 -Path .\zentrale-wabe.txt
# zwei Anlagen als zwei Arbeitsblätter in einer Mappe
Convert-WabeToExcel.ps1 -Path .\zentrale-wabe.txt,.\aussenstelle-wabe.txt `
-WorksheetName Zentrale,Aussenstelle -OutFile .\Rufnummern.xlsx -Force
# alle Mitschriften eines Ordners
Get-ChildItem *-wabe.txt | Convert-WabeToExcel.ps1
# Parameterübersicht und Umgebungsprüfung
Convert-WabeToExcel.ps1 -Help
Convert-WabeToExcel.ps1 -CheckOnlyZum Ausprobieren liegt eine fiktive Mitschrift im Repo:
Convert-WabeToExcel.ps1 -Path .\examples\beispiel-wabe.txt| Status | Bedeutung |
|---|---|
| belegt | Rufnummer ist im System verwendet — Teilnehmer, Sammelanschluss, Kennzahl usw. |
| frei | Kennzeichen V in der Spalte VORLEIST/RUFUM/DNI/ZUSATZINF/UFIP — die Rufnummer ist nur in der Wahlbewertung vorgeleistet und wird im System nicht weiter verwendet. Also frei vergebbar. |
| undefiniert | Rufnummer ist in der Wahlbewertung gar nicht eingerichtet — weder belegt noch vorgeleistet. |
Zur Bedeutung des V sagt die AMO-Beschreibung ABFRAGEN-WABE (OpenScape 4000 V11R1):
Der Spalte für Zusatzinformationen (VORLEIST etc.) kann man entnehmen, welche Richtungs-KZP nur in der Wahlbewertung vorgeleistet sind, ohne im System weiter verwendet zu werden. Dies wird durch den Wert „V" gekennzeichnet.
Die Anlage listet nicht eingerichtete Rufnummern nicht auf — sie fehlen einfach.
Das Skript berechnet sie: Es betrachtet 100er-Blöcke (Rufnummer ohne die letzten zwei
Stellen) ab drei Stellen Länge und füllt einen Block nur dann auf, wenn darin
mindestens -MinBelegt Rufnummern mit Kennzahlpunkt TLN oder SAMMEL liegen.
Diese Schwelle verhindert, dass einzelne Netz- oder Fremdknoteneinträge einen ganzen Block erzeugen, dessen Nummernumfeld die abgefragte Anlage überhaupt nicht verwaltet. Die tatsächlich ausgewerteten Blöcke stehen als Legendenzeile im Kopf jedes Arbeitsblattes — die Zahl bleibt damit nachvollziehbar.
Mit -NoGaps entfällt die Berechnung, dann erscheinen nur die echten WABE-Einträge.
| Spalte | Inhalt |
|---|---|
| Rufnummer | Einzelrufnummer, immer als Text — führende Nullen bleiben erhalten |
| Stellen | Stellenzahl, als Zahl (zum Filtern der Nummernkreise) |
| Status | belegt / frei / undefiniert, farblich hervorgehoben |
| Kennzahlpunkt | KZP aus der WABE (TLN, SAMMEL, QUER, ABF, …) |
| Bedeutung | Klartext zum Kennzahlpunkt |
| Ziel | „eigener Knoten" bzw. „Knoten n", abgeleitet aus ZLNR |
| Hinweis | Kennzeichen R (Rufnummernumwertung, AMO RUFUM) bzw. D (DNI-Ziel für ACD, AMO DNIT) |
| WABE-Bereich | ursprünglicher Bereichseintrag, aus dem die Zeile stammt |
| Gültigkeit | alle WABE-Gruppen bzw. WABE 0..15 |
| Verkehrssituation | VKS-Bitmuster im Original |
Rufnummernbereiche der Form 128 - 130 werden zu Einzelzeilen aufgelöst. Jedes
Arbeitsblatt hat Autofilter, eingefrorene Kopfzeile und eine Summenzeile, die per
SUBTOTAL mit dem gesetzten Filter mitrechnet.
Praktischer Einstieg in eine fertige Liste: auf Status = frei und
Kennzahlpunkt = TLN filtern — das sind die sofort vergebbaren Nebenstellen.
| Parameter | Standard | Bedeutung |
|---|---|---|
-Path <String[]> |
Pflicht | Eine oder mehrere WABE-Textdateien. Wildcards und Pipeline-Eingabe zulässig. |
-OutFile <String> |
abgeleitet | Ziel-Arbeitsmappe. Ohne Angabe Rufnummernbelegung_<Datum>.xlsx neben der ersten Eingabedatei. |
-WorksheetName <String[]> |
abgeleitet | Blattnamen in Reihenfolge der Eingabedateien; sonst aus Anlagenname (AMO FBTID) bzw. Dateiname. |
-MinBelegt <Int> |
3 |
Mindestzahl belegter TLN-/SAMMEL-Nummern je Block (siehe oben). |
-BlockSize <Int> |
100 |
Größe der geprüften Nummernblöcke: 100 oder 1000. |
-NoGaps |
aus | Keine undefinierten Nummern ergänzen. |
-Engine <String> |
Auto |
Auto | ImportExcel | COM | Csv. |
-PassThru |
aus | Gibt die Rufnummernobjekte zusätzlich in der Pipeline aus. |
-Force |
aus | Überschreibt eine vorhandene Ausgabedatei. |
-CheckOnly |
— | Prüft nur die Umgebung und beendet sich. |
-Help |
— | Parameterübersicht im Terminal. |
Ausführliche Hilfe: Get-Help Convert-WabeToExcel.ps1 -Full
# freie Nebenstellen im dreistelligen Bereich
Convert-WabeToExcel.ps1 -Path .\zentrale-wabe.txt -PassThru |
Where-Object { $_.Status -eq 'frei' -and $_.Kennzahlpunkt -eq 'TLN' -and $_.Stellen -eq 3 } |
Select-Object -ExpandProperty RufnummerDas Skript wählt automatisch, was verfügbar ist:
| Engine | Voraussetzung | Anmerkung |
|---|---|---|
| ImportExcel | Modul ImportExcel | bevorzugt, kein Excel nötig (EPPlus) |
| COM | installiertes Excel | Rückfall ohne Modul |
| Csv | — | letzter Rückfall, Semikolon, UTF-8 mit BOM |
Beide Excel-Engines liefern zellengleiche Ergebnisse.
Hinweis zum CSV-Rückfall: Die Rufnummern stehen korrekt in Anführungszeichen, aber Excel entfernt beim Doppelklick auf eine CSV die führenden Nullen. Die Datei stattdessen über Daten → Aus Text/CSV importieren und die Spalte Rufnummer auf Datentyp Text stellen — oder ImportExcel installieren.
| Komponente | Version |
|---|---|
| Windows PowerShell | 5.1 |
| oder PowerShell | 7.x |
| ImportExcel (optional) | 7.x — Install-Module ImportExcel -Scope CurrentUser |
| Microsoft Excel (optional) | nur für -Engine COM |
Unter tests/ liegt ein Testaufbau, der die Installation in einer
vollständig unberührten Windows-Umgebung prüft. Das ist aussagekräftiger als ein Test
auf einem eingerichteten Arbeitsplatz, denn in der Sandbox fehlen gleich drei Dinge:
- das Modul ImportExcel
- der NuGet-Paketanbieter — ohne ihn stellt
Install-Moduleeine Rückfrage, die in einer nicht interaktiven Sitzung scheitert - Microsoft Excel — der COM-Rückfallweg steht also nicht zur Verfügung
cd tests
.\Start-SandboxTest.ps1Das Skript erzeugt eine .wsb-Konfiguration mit den Pfaden des eigenen Rechners,
startet die Sandbox und wartet auf das Ergebnis. Geprüft werden Ausgangszustand,
Einzeiler-Installation, Nachinstallation der Voraussetzungen, Kodierung des geladenen
Skripts, PATH-Eintrag, Konvertierung der Beispielmitschrift inklusive Textformat und
führender Nullen sowie die Deinstallation. Protokoll und erzeugte Dateien landen in
tests/ergebnisse/ auf dem Host.
Voraussetzung ist das Windows-Feature Windows-Sandbox (Windows 10/11 Pro, Enterprise oder Education). Aktivieren als Administrator, danach Neustart:
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVMDie Windows Sandbox setzt den Hyper-V-Hypervisor voraus, der die Leistung von VMware Workstation beeinträchtigt. Wer VMware nutzt, testet daher besser in einer VM:
cd tests
.\Start-VmwareTest.ps1 # listet die registrierten VMs
.\Start-VmwareTest.ps1 -Vmx 'D:\VM\Test\Test.vmx' -GastBenutzer 'Admin'Das Skript legt einen Sicherungspunkt an, startet die VM, führt Test-Installation.ps1
über vmrun im Gast aus, holt Protokoll und Ergebnis zurück und setzt die VM
anschließend auf den Sicherungspunkt zurück — der Test bleibt also rückstandsfrei.
Mit -KeinRuecksetzen bleibt der Zustand nach dem Test erhalten, um einem Fehlschlag
in der VM nachzugehen.
In der VM werden VMware Tools benötigt (sonst kann vmrun dort nichts ausführen) sowie
ein Internetzugang; NAT genügt. Am aussagekräftigsten ist eine VM, in der weder
ImportExcel noch Microsoft Excel installiert ist.
AMO-Mitschriften enthalten Rufnummern, Teilnehmernamen, IP-Adressen sowie Anlagen- und
Systemnummern. Die .gitignore dieses Repos blockiert *wabe*.txt, *regen*.txt,
*.xlsx, *.csv und Ähnliches, damit solche Dateien nicht versehentlich in ein
Repository geraten. Die Datei unter examples/ ist vollständig fiktiv.
Wahlbewertung, Rufnummernplan, Rufnummernbelegung, freie Rufnummern, belegte Rufnummern,
vorgeleistete Rufnummer, Durchwahl, Nebenstelle, Rufnummernvorrat, Nummernkreis,
Kennzahlpunkt, ABFRAGEN-WABE:TYP=ALLG, DISPLAY-WABE, AMO, ComWin, Regenerierung,
OpenScape 4000, HiPath 4000, Hicom 300, Unify, Atos, Mitel, TK-Anlage, Telefonanlage —
dial plan, numbering plan, extension list, DID range, direct inward dialling, PBX audit,
free extension numbers report.
- os4k2excel — Port-, Lizenz- und Rufumleitungsdaten als Excel-Report
- Estos-Location-Rules-Synchronizer — standortübergreifende Rufnummernauflösung in Estos ProCall aus der OpenScape 4000 pflegen
MIT — siehe LICENSE.
Nicht mit Unify, Mitel oder Atos verbunden. OpenScape und HiPath sind Marken der jeweiligen Rechteinhaber.