# 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: ```cmd run-inventory.cmd ACC C:\IIS-Doku\ACC ``` PROD: ```cmd run-inventory.cmd PROD C:\IIS-Doku\PROD ``` Die Ausgabe besteht pro Lauf aus: ```text 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: ```cmd scripts\build-release.cmd ``` Deployment-Paket: ```cmd scripts\package-release.cmd ``` Ergebnis: ```text artifacts\BizTalkIisEnvironmentInventory-deploy\ ``` ## Direkter Aufruf ```cmd 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 ```text . ├── .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](Dokumentation.md) beschrieben. ## Base64-Transport per certutil Wenn das Repository als `BizTalkIisEnvironmentInventory-source.zip.txt` geliefert wird: ```cmd 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.