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
- Ordnerstruktur anlegen und Bilder einsortieren
- Mit
-ListProductsdie echten Namen abgleichen - Zunächst ohne
-Applytesten und die Ausgabe prüfen - Anschließend mit
-Applyscharf ausführen - 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
POSTauf…/api/v1/<Typ>(Insert/Update). Es werden bewusst nur die Asset-Id und das Bild gesendet, damit keine anderen Felder verändert werden. HardwareAssetist 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.