Seite 1 von 1

tis-audit-bitlocker

Veröffentlicht: 27. Januar 2026 - 10:31 Uhr
von VincentUCA
Hallo,
ich habe ein Problem mit der Audit-Funktion dieses Pakets.

Auf einigen unserer Rechner gibt die PowerShell-Funktion "(Get-BitLockerVolume).MountPoint" ungewöhnliche Laufwerksbuchstaben wie \\?\Volume{2d8e1378-6a0d-4197-49d0-fe4e2f18cd72} zurück.

Im weiteren Verlauf des Paketcodes ermöglicht eine for-Schleife (for mountpoint in mountpoint_list:) das Ignorieren dieser Laufwerke mithilfe der is_ignored.
Wenn die Bedingung "?" in mountpoint erfüllt ist (wenn "?" in mountpoint:), wird die is_ignored auf True gesetzt, und das Laufwerk wird für den Rest der Audit-Funktion ignoriert. Das funktioniert soweit.

Mein Problem liegt in den weiteren Bedingungen, die anschließend in derselben Schleife geprüft werden. Es handelt sich dabei um zusätzliche if-Anweisungen, die auch dann geprüft werden, wenn die erste Bedingung bereits erfüllt ist. Beispielsweise löst die Funktion „Get-Volume -DriveLetter %s | Where-Object DriveType -EQ Removable“ in der zweiten Bedingung einen Fehler im Paket aus. Die Fehlermeldung lautet: „Get-Volume: Es wurde kein Positionsparameter gefunden, der 2d8e1378-6a0d-4197-49d0-fe4e2f18cd72 akzeptiert“ usw.
Offensichtlich akzeptiert das Argument „DriveLetter“ den ungewöhnlichen Datenträgernamen nicht. Möglicherweise verursachen die geschweiften Klammern {} einen Syntaxfehler.

Ich habe das Problem umgangen, indem ich die Bedingungen mit „if not is_ignored and“ begonnen habe. Beim Schreiben dieser Nachricht ist mir jedoch klar geworden, dass ich mit „elif“-Anweisungen wahrscheinlich dasselbe Ergebnis erzielen würde.

Mit dieser Änderung funktioniert das Paket etwas besser. Der BitLocker-Schlüssel wird aus Active Directory und der WAPT-Konsole abgerufen. Die Überwachung bleibt jedoch fehlerhaft, da anschließend ein neuer Fehler auftritt. Diesmal bei der PowerShell-Funktion „Get-BitLockerVolume“. (Get-BitLockerVolume: Es konnte kein Positionsargument gefunden werden, das das angegebene Argument akzeptiert...)

Ich habe noch nicht herausgefunden, in welcher Zeile des Audit-Skripts dieser neue Fehler auftritt. Auch die Ursache ist mir noch unklar, da ungewöhnliche Volume-Namen logischerweise nicht mehr verwendet werden sollten. Ich hielt es aber für sinnvoll, die Fehler in dieser ersten Schleife zu melden.

Sobald ich die Ursache für diesen neuen Fehler gefunden habe, werde ich sie hier ergänzen.

Schönen Tag noch.
Vincent

Betreff: tis-audit-bitlocker

Veröffentlicht: 27. Januar 2026 – 16:23 Uhr
von VincentUCA
Ich habe die Ursache des Problems gefunden, indem ich diese Seite gelesen habe:
https://community.spiceworks.com/t/how-...g/932099/5

Das Problem entsteht durch die Verwendung der `remove`-Methode innerhalb der `for`-Schleife. Dies führt zu unerwartetem Verhalten. Infolgedessen wird ein ungewöhnlicher Reader nicht aus der `mountpoint_list` entfernt, wodurch das Skript fehlschlägt.

Ich bin also dem Tipp auf der Webseite gefolgt und habe den Paketcode für die erste for-Schleife wie folgt geändert:

Code: Alle auswählen

    mountpoint_list_raw = ensure_list(run_powershell("(Get-BitLockerVolume).MountPoint"))
    mountpoint_list = []

    # Cleaning mountpoints (unpartitionned devices and removal devices)
    for mountpoint in mountpoint_list_raw:
        is_ignored = False
        if "?" in mountpoint:
            print("INFO: An unknow volume has been detected and will be skipped (%s)" % mountpoint)
            is_ignored = True
        elif run_powershell("Get-Volume -DriveLetter %s | Where-Object DriveType -EQ Removable" % mountpoint.replace(":", "")):
            is_ignored = True
        elif run_powershell("(Get-PhysicalDisk | Where-Object BusType -EQ USB | ForEach-Object { Get-Disk -Number $_.DeviceId | Get-Partition | Get-Volume } | Where-Object DriveLetter -EQ '%s').DriveLetter -ne $null" % mountpoint.replace(":", "")):
            is_ignored = True
        else:
            print(f"Adding '{mountpoint}' in mountpoint_list")
            mountpoint_list.append(mountpoint)
        if is_ignored:
            print(f"'{mountpoint}' will be ignored")
            #mountpoint_list.remove(mountpoint)
Die Verwendung einer zweiten Liste sowie von elif scheint alle Probleme zu lösen, die bei diesem Paket aufgetreten sind, wie erste Tests gezeigt haben.
Guter Code.
Vincent