Mit dem hier bereitgestellten PowerShell-Skript lassen sich Bilder automatisiert an sehr vielen Assets gleichzeitig hinterlegen. Die Zuordnung erfolgt über eine einfache Ordnerstruktur im Windows Explorer: Der Ordnername entspricht dem Hersteller, der Dateiname dem Modell. Alle Assets mit dieser Hersteller-/Modell-Kombination erhalten automatisch das passende Bild.

Das Skript arbeitet über die LOGINventory Web API und berücksichtigt die gesamte HardwareAsset-Klassenhierarchie:

  • Device – scanbare Geräte (PCs, Server, Drucker, Smartphones …)
  • PeripheralDevice – Monitore, Tastaturen, Dockingstations, Headsets …
  • Item – sonstige Inventar-Gegenstände (Möbel, Schlüssel …)

Hinweis: Soll lediglich ein einzelnes Gerät mit einem Bild versehen werden, genügt das deutlich kürzere Skript aus diesem Artikel: Wie kann man per (Powershell-) Skript automatisiert Bilder an Geräten in LOGINventory hinterlegen?

Voraussetzungen

  • LOGINventory 9 mit aktivierter Web API (REST)
  • Ein API-Key mit Vollzugriff – ein reiner Lese-Key kann keine Bilder schreiben
  • PowerShell 5.1 oder neuer
  • Netzwerkzugriff vom ausführenden Rechner auf den LOGINventory-Server

Die Aktivierung der Web API und das Anlegen eines API-Keys ist im Handbuch beschrieben: Web API – LOGINventory9 Handbuch

Vor dem ersten Start: Server und API-Key eintragen

Server-Name und API-Key müssen auf die eigene Umgebung angepasst werden. Dafür gibt es zwei Wege:

Variante A – dauerhaft im Skript hinterlegen
Die Datei Set-LIAssetImages.ps1 in einem Editor öffnen und oben im Block param( … ) anpassen:

[string]$Server = "localhost",   <- Hostname/IP des LOGINventory-Servers
[string]$ApiKey = "....",        <- eigener API-Key mit Vollzugriff
[string]$Scheme = "http",        <- ggf. auf "https" stellen

Variante B – beim Aufruf übergeben (nichts im Skript ändern):

.\Set-LIAssetImages.ps1 -Server inventory.firma.local -ApiKey "DEIN_KEY" -ImageRoot C:\AssetImages

Ordnerstruktur anlegen

Der Aufbau ist bewusst einfach gehalten:

<Bild-Wurzel>\<Hersteller>\<Modellname>.<Endung>
  • Ordner auf erster Ebene = Hersteller (HardwareProduct.Manufacturer)
  • Dateiname in diesem Ordner = Modellbezeichnung (HardwareProduct.Name)
  • Unterstützte Formate: png, jpg, jpeg, bmp

Beispiel:

C:\AssetImages\
    HP\
        HP EliteBook 850 G7 Notebook PC.jpg
    Asus\
        ACI249A.jpg                 (Monitor = PeripheralDevice)
    Blomus\
        AKT-839.jpg                 (Gegenstand = Item)

Wichtig: webp und gif werden vom LOGINventory Management Center nicht angezeigt und sind daher bewusst nicht zugelassen.

Namen müssen nicht exakt stimmen

Windows erlaubt bestimmte Zeichen in Ordner- und Dateinamen nicht (z. B. \ / : * ? " < > | sowie keinen Punkt am Ende). Das Skript gleicht Namen deshalb tolerant ab: Beim Vergleich werden alle Sonderzeichen, Leerzeichen und die Groß-/Kleinschreibung ignoriert – es zählen nur Buchstaben und Ziffern.

Echter Wert in LOGINventory Ihr Ordner / Ihre Datei
Hersteller Apple Inc. Ordner Apple Inc
Modell MacBook Pro (Retina, 13", Anfang 2015) Datei MacBook Pro (Retina, 13, Anfang 2015).jpg

Verbotene Zeichen können also einfach weggelassen werden – die Zuordnung erfolgt trotzdem korrekt.

Tipp: Mit dem Schalter -ListProducts gibt das Skript alle echten Hersteller- und Modellnamen aus LOGINventory als Benennungsvorlage aus:

.\Set-LIAssetImages.ps1 -ListProducts

Schnellstart

Schritt 1 – Testlauf (Dry-Run). Es wird nichts geschrieben, das Skript zeigt nur an, was passieren würde:

.\Set-LIAssetImages.ps1 -ImageRoot C:\AssetImages

Schritt 2 – Scharf ausführen, wenn die Ausgabe passt:

.\Set-LIAssetImages.ps1 -ImageRoot C:\AssetImages -Apply

Falls die Ausführung von Skripten blockiert ist, einmalig für das aktuelle Fenster:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Assets, die bereits ein Bild besitzen, werden dabei nicht verändert. Das Skript kann daher jederzeit erneut laufen: Bestehendes bleibt erhalten, neue Assets werden ergänzt.

Parameter

Parameter Bedeutung
-ImageRoot <Pfad> Wurzelordner mit den Hersteller-Unterordnern
-Apply Führt die Schreibvorgänge tatsächlich aus. Ohne diesen Schalter: Dry-Run
-Force Überschreibt auch bereits vorhandene Bilder
-AssetTypes <Liste> Welche Asset-Typen durchsucht werden. Standard: Device,PeripheralDevice,Item
-MatchByNameOnly Ordnet nur über den Modellnamen zu und ignoriert den Hersteller. Nützlich, wenn Hersteller uneinheitlich erfasst sind (z. B. „HP“ vs. „Hewlett-Packard“)
-ListProducts Listet nur die echten Hersteller-/Modellwerte auf und beendet sich
-MaxImageKB <Zahl> Warnt bei Bilddateien oberhalb der angegebenen Größe (in KB)
-LogFile <Pfad> Schreibt die Ausgaben zusätzlich in eine Logdatei
-Server, -ApiKey, -Scheme Verbindungsdaten, falls nicht im Skript hinterlegt

Weitere Beispiele

# Nur Geräte und Peripherie, ohne Items
.\Set-LIAssetImages.ps1 -ImageRoot C:\AssetImages -Apply -AssetTypes Device,PeripheralDevice

# Vorhandene Bilder überschreiben
.\Set-LIAssetImages.ps1 -ImageRoot C:\AssetImages -Apply -Force

# Nur über den Modellnamen zuordnen (Hersteller egal)
.\Set-LIAssetImages.ps1 -ImageRoot C:\AssetImages -Apply -MatchByNameOnly

# Mit Logdatei und Größenwarnung ab 800 KB
.\Set-LIAssetImages.ps1 -ImageRoot C:\AssetImages -Apply -MaxImageKB 800 -LogFile C:\temp\images.log

Die Ausgabe verstehen

Jede Zeile nennt den Asset-Typ, z. B.:

Image set for PeripheralDevice 'ACI249A' (Id 263).

Am Ende erscheint eine Zusammenfassung:

Files Anzahl gefundener Bilddateien
Matched Anzahl Assets, die zu einem Bild gepasst haben
Written Anzahl tatsächlich geschriebener Bilder (nur mit -Apply)
Skipped Übersprungen, weil bereits ein Bild vorhanden war
NoProduct Bild ohne passendes Modell in LOGINventory – meist ein Tippfehler im Datei- oder Ordnernamen
NoAsset Modell existiert, es hängt aber kein Asset daran
Errors Fehler beim Schreiben

Empfohlene Vorgehensweise

  1. Ordnerstruktur anlegen und Bilder einsortieren
  2. Mit -ListProducts die echten Namen abgleichen
  3. Zunächst ohne -Apply testen und die Ausgabe prüfen
  4. Anschließend mit -Apply scharf ausführen
  5. In LOGINventory stichprobenartig kontrollieren

Technische Hinweise

  • Nur Assets mit hinterlegtem HardwareProduct (Hersteller + Modell) können über diese Methode gefunden werden. Reine Inventar-Gegenstände ohne Hersteller-/Modellangabe (z. B. ein generischer „Stuhl“) lassen sich so nicht zuordnen.
  • Geschrieben wird per POST auf …/api/v1/<Typ> (Insert/Update). Es werden bewusst nur die Asset-Id und das Bild gesendet, damit keine anderen Felder verändert werden.
  • HardwareAsset ist eine abstrakte Basisklasse und kann nicht direkt beschrieben werden. Das Skript spricht daher immer den konkreten Endpunkt an (Device, PeripheralDevice oder Item).
  • Das Bild wird als Base64 übertragen, so wie LOGINventory das Image-Feld erwartet.

Download

Das Skript Set-LIAssetImages.ps1 sowie eine ausführliche README.txt stehen im angehängten ZIP-Archiv zur Verfügung.