Files
admin d326341488
Build und Test / build (push) Has been cancelled
Initial commit: BizTalk IIS inventory with DOCX reporting
2026-07-24 15:32:18 +02:00

5.5 KiB

BizTalk IIS Environment Inventory

BizTalk IIS Environment Inventory erzeugt pro BizTalk-2020-Umgebung eine Microsoft-Word-Dokumentation (.docx) des lokalen IIS- und BizTalk-Servers. Das Tool ist für die BEW-Umgebungen ACC und PROD vorgesehen und funktioniert ohne PowerShell.

Es ist eine C#-Konsolenanwendung für .NET Framework 4.7.2. Auf dem Zielserver werden weder Microsoft Word/Office noch BizTalk-SDK-DLLs oder Microsoft.Web.Administration benötigt. Die Anwendung erzeugt das DOCX direkt als standardkonformes Office-Open-XML-Paket und liest lokale Windows-/IIS-Daten, WMI, Registry, Zertifikatsspeicher und NTFS-ACLs ausschließlich lesend.

Erfasster Umfang

  • installierte IIS-/WAS-/HTTP-/MSMQ- und .NET-Serverrollen
  • applicationHost.config, globale IIS-Sections und Konfigurationsprovider
  • Application Pools inklusive effektiver Identitäten
  • Sites, Bindings, Anwendungen und virtuelle Verzeichnisse
  • Webinhaltsmanifest mit Pfad, Größe und Änderungszeit; SHA-256 optional
  • NTFS-Berechtigungen der Web-Stammverzeichnisse
  • Zertifikate aus LocalMachine\My, IIS-Zuordnung, Ablauf und Enhanced Key Usage
  • Private-Key-Metadaten, Exportpolicy, Provider, Container und ACL
  • relevante Windows-Dienste und deren Dienstkonten
  • lokale User Rights und Security-/Audit-Policy über secedit.exe
  • BizTalk-Installation, Produkt-/Dateiversionen und zentrale WMI-Klassen
  • Fehler, fehlende Rechte und unvollständige Daten als sichtbare Findings

Der in der Aufgabe genannte Scope wird standardmäßig geprüft:

  • heat_archive
  • heat_bankdata
  • heat_bbill
  • heat_caccount
  • heat_invoice
  • heat_meterchange
  • heat_meterlist
  • heat_meterreading

Fehlt eine erwartete Anwendung, erscheint ein Hinweis im Bericht. Die Liste kann in BizTalkIisEnvironmentInventory.exe.config über ExpectedApplications angepasst oder durch einen leeren Wert deaktiviert werden.

Sicherheitsprinzip

Das Word-Dokument enthält absichtlich:

  • keine Kennwörter
  • keine Connection Strings oder Tokens
  • keine entschlüsselbaren IIS-Konfigurationsblobs
  • keine privaten Schlüssel/PFX-Dateien

Für die Migration werden stattdessen Provider, Containername, Fingerprint, Exportpolicy und ACL dokumentiert. Zertifikate und IIS-Verschlüsselungsschlüssel müssen anschließend über den freigegebenen betrieblichen Schlüsseltransfer übertragen werden. Der Report selbst ist kein Key-Backup.

Schnellstart auf ACC und PROD

Deployment-Ordner auf den jeweiligen BizTalk-Server kopieren und eine administrative cmd.exe öffnen.

ACC:

run-inventory.cmd ACC C:\IIS-Doku\ACC

PROD:

run-inventory.cmd PROD C:\IIS-Doku\PROD

Die Ausgabe besteht pro Lauf aus:

IIS-Dokumentation-ACC-SERVERNAME-20260724-143000.docx
IIS-Dokumentation-ACC-SERVERNAME-20260724-143000.log

Das DOCX ist vollständig offline und kann anschließend auf einem Arbeitsplatz mit Microsoft Word, LibreOffice oder einer anderen OOXML-kompatiblen Anwendung geöffnet, durchsucht, gedruckt oder als PDF gespeichert werden. Auf dem BizTalk-Server wird keine dieser Anwendungen benötigt. Während des Laufs zeigt die Konsole jeden Collector, Laufzeit, Fehler und den finalen Dateipfad.

Voraussetzungen

Zielserver:

  • Windows Server mit IIS/BizTalk Server 2020
  • .NET Framework 4.7.2 oder neueres 4.x
  • lokale Ausführung auf dem zu dokumentierenden Server
  • administrative Eingabeaufforderung empfohlen

Build-Host:

  • Visual Studio 2022 Build Tools oder Visual Studio 2022
  • .NET Framework 4.7.2 Developer Pack
  • MSBuild im PATH oder über vswhere.exe auffindbar

Build und Tests:

scripts\build-release.cmd

Deployment-Paket:

scripts\package-release.cmd

Ergebnis:

artifacts\BizTalkIisEnvironmentInventory-deploy\

Direkter Aufruf

BizTalkIisEnvironmentInventory.exe --environment ACC --output C:\IIS-Doku\ACC

Optionen:

Option Bedeutung
--environment NAME Umgebung, beispielsweise ACC oder PROD.
--output PFAD Ausgabeordner für DOCX und Log.
--include-file-hashes Berechnet SHA-256 für manifestierte Webdateien; erhöht Laufzeit und I/O.
--skip-content-manifest Erfasst Pfade und ACLs, aber keine rekursive Dateiliste.
--iis-config DATEI Liest eine alternative applicationHost.config, vor allem für Offline-Tests.
--self-test Prüft Parser, Secret-Bereinigung und DOCX-Paketstruktur ohne Serverzugriffe.

Exitcodes:

Code Bedeutung
0 Alle Collector-Abschnitte erfolgreich.
1 Bericht wurde erzeugt, mindestens ein Abschnitt war unvollständig.
2 Fataler Fehler; Aufruf, Ausgabeordner oder Berichtserzeugung prüfen.

Repository-Struktur

.
├── .gitea/workflows/build.yml
├── deployment/run-inventory.cmd
├── scripts/
│   ├── build-release.cmd
│   └── package-release.cmd
├── src/BizTalkIisEnvironmentInventory/
├── tests/BizTalkIisEnvironmentInventory.Tests/
├── BizTalkIisEnvironmentInventory.sln
├── Dokumentation.md
└── Readme.md

Die technische Architektur, Berechtigungen, Datenquellen und Betriebsgrenzen sind in Dokumentation.md beschrieben.

Base64-Transport per certutil

Wenn das Repository als BizTalkIisEnvironmentInventory-source.zip.txt geliefert wird:

certutil.exe -decode BizTalkIisEnvironmentInventory-source.zip.txt BizTalkIisEnvironmentInventory-source.zip

Danach die ZIP-Datei mit Windows Explorer oder tar.exe entpacken. Der SHA-256-Wert der ZIP-Datei wird bei der Übergabe separat genannt.