Zum Inhalt

PowerShell-Schnittstelle

Das LOGINventory PowerShell Add-on stellt dem Benutzer eine vollständige Skript-Schnittstelle für die Windows PowerShell 4.0 oder neuer zur Verfügung. Dadurch wird es möglich, gezielt auf sämtliche Daten in der LOGINventory Datenbank zuzugreifen und diese nach Belieben zu verarbeiten und aufzubereiten.

Das Add-on besteht aus einem PowerShell Provider, um sich in der Baumstruktur von LOGINventory zu bewegen, und mehreren CommandLets (auch: CmdLets), die bestimmte Funktionen abdecken (Reports, Mail, Setzen von Eigenen Eigenschaften, usw.) und laufend erweitert werden.

Neben den speziellen LOGINventory CmdLets können auch alle Standard-CmdLets benutzt werden, wie z.B. Export-Csv (siehe: http://technet.microsoft.com/de-de/library/ee176825.aspx).

Beispiel:

PS LI:\> cd '.\IT Inventory\Assets'
PS LI:\IT Inventory\Assets> Get-LiData | Export-Csv c:\temp\export.txt

System Voraussetzungen

Windows PowerShell Version 3.0 (ab Windows 8 und Windows Server 2012 bereits installiert) oder neuer muss vorhanden sein. Die Standard-Einstellung der Windows PowerShell ist es, die Ausführung von Skripts zu verhindern (ExecutionPolicy = Restricted)! Sie müssen diese Funktion erst freischalten, z.B. über eine administrative PowerShell mit:

C:\> Powershell -command Set-ExecutionPolicy ByPass -scope LocalMachine

PowerShell Aufrufen

Die LOGINventory PowerShell kann entweder über das Ribbon-Menü unter Extras aufgerufen werden oder der Aufruf erfolgt über das mitgelieferte Programm PSC.exe, optional mit Angabe der ExecutionPolicy, einer Skript-Datei oder weiteren Parametern z.B.:

C:\> "%ProgramFiles%\LOGIN\LOGINventory8\PSC.exe" -ExecutionPolicy bypass -file "C:\myscript.ps1" [parameter]

Skripte können innerhalb der LOGINventory PowerShell ohne Einschränkungen ausgeführt werden.

PowerShell Beispiele

Mit der Installation von LOGINventory werden auch einige Beispiel-Skripts ausgeliefert. Über den LOGINventory-Shortcut PowerShell Samples (zu finden im Startmenü) erhalten Sie in einem Explorer-Fenster eine Übersicht der vorhandenen Beispiele.

Um eines der Beispiel-Skripte zu starten, reicht es:

  • die Konsole PowerShell LOGINventory8 zu öffnen,
  • eine .ps1-Datei des Skriptes via Drag & Drop in das geöffnete LOGINventory-PowerShell-Fenster zu verschieben,
  • die ENTER-Taste zu drücken.

Das Beispiel „InitOtherClients.ps1“ kann dazu verwendet werden, innerhalb der Windows-PowerShell den LOGINventory PowerShell Provider zu initialisieren. Wie das im Detail ablaufen muss, ist in dieser Datei beschrieben.

Die Skripte müssen ggf. für Ihre Umgebung angepasst werden:

  • Eventuell lassen sich die Sample-Skripte nicht starten, da Sie keine Berechtigung haben, aus dem Programm-Verzeichnis Skripte zu starten. Kopieren Sie daher das gesamte Samples-Verzeichnis in einen lokalen Pfad (z.B. c:\Scripts).
  • Während des Updates auf eine neue LOGINventory-Version werden die mitgelieferten PowerShell-Samples im Installationsverzeichnis überschrieben, womit Änderungen und Ergänzungen durch den Benutzer verloren gehen. Aus diesem Grund empfehlen wir ebenfalls, die Überarbeitung der Samples nicht im Original-Verzeichnis durchzuführen!
  • In den Skripten werden u.a. Filter auf Asset-Namen gesetzt ('Device.Name' -like "DE*"), die Sie entsprechend anpassen müssen.

Die Beispiel-Skripte sind nachfolgendem Schema aufgebaut:

1   # Call these scripts:
2   # [ProgDir]\PSC.exe -file "path\scriptname.ps1" [parameter]
3   # Save current path, to restore at the end ...
4   $savePath=$PWD
5   cd "LI:\Software Licenses\Product Administration"
6   Get-LiData | Where {$_.'License.Required' -gt $_.'License.Available'}
7   cd $savePath
  • Zuerst wird der aktuelle Pfad gesichert (Zeile 4)
  • Dann wird auf den gewünschten Auswerte-Pfad gewechselt (Zeile 5)
  • Dann die gewünschten CmdLets ausgeführt
  • Schließlich der ursprüngliche Pfad wiederhergestellt (Zeile 7)

Das Konzept des LOGINventory PowerShell Providers

Die Navigation durch die LOGINventory-Baumstruktur erfolgt mit den aus der DOS-Box bekannten Befehlen CD (oder: Set-Location) und DIR (oder: Get-LiData). Die Namen der Knoten im Baum sind in der PowerShell nicht lokalisiert, sie entsprechen somit stets der englischen Bezeichnung; Ausnahme: „Lizenz Management“ heißt in der PowerShell „Software Licenses“. Beim Navigieren mit CD funktioniert auch die Autovervollständigung mit der TAB-Taste. Damit brauchen die Verzeichnis-Namen nicht vollständig ausgeschrieben zu werden.

Wichtig

Die Ergebnisliste jedes einzelnen Knotens kann mit dem CmdLet Get-LiData abgerufen werden.

Verfügbare Befehle

Neben den allgemeinen Windows PowerShell CmdLets (http://technet.microsoft.com/de-de/library/hh849827%28v=wps.620%29.aspx) gibt es LOGINventory-spezifische Befehle. Im Allgemeinen wird die Ausgabe des Befehls über ein where-CmdLet gefiltert als Eingabe-Parameter für weitere CmdLets genutzt.

Daten Abrufen

Syntax: Get-LiData - View <String>

Liefert die Informationen der Detailansicht für den angewählten Knoten im LOGINventory-Baum, für die Standard-Ansicht.

Parameter Mögliche Werte Erforderlich?
-View <String> ChangeLog, ComputerAccounts, UserAccounts, LicenseConsumer, LicenseList, LicensProductList, LicenseVersionDetails, UsageResults nein

Beispiel: Get-LiData –view ComputerAccounts

Geräte Archivieren

Syntax: Disable-LiAsset -InputObj ‹String[]›

Archiviert die entsprechenden Assets.

Parameter Erklärung Erforderlich?
-InputObject ‹Object› Liste der Geräte ja

Beispiel: Get-LiData |? name –like DES* | Disable-LiAsset

Geräte Reaktivieren

Syntax: Enable-LiAsset -InputObj ‹String[]›

Reaktiviert ausgewählte Assets aus dem Archiv.

Parameter wie beim Archivieren.

Beispiel: Get-LiData | ? name –like DES* | Enable-LiAsset

Geräte Löschen

Syntax: Remove-LiAsset -InputObj ‹String[]›

Löscht die ausgewählten Assets endgültig.

Parameter wie beim Archivieren

Beispiel: Get-LiData | ? name –like DES* | Remove-LiAsset

Setzen von Eigenen Eigenschaften

Syntax: Set-LiCustomProperty -Name ‹String› -Value ‹String|DateTime|Int64›[–AssetName ‹String›] [-InputObj ‹Object›]

Weist dem angegebenen Asset eine Eigene Eigenschaft zu.

Parameter Erklärung Erforderlich?
-Name <String> Name der (neuen) Eigenschaft, keine Sonderzeichen oder Leerzeichen ja
-Value ‹String/DateTime/Int64› Wert der zu setzenden Eigenschaft ja
-AssetName <String> Name des Geräts, dem die Eigenschaft zugewiesen werden soll ja

Beispiele:

  • Set-LiCustomProperty –Name "RaumNr" –Value "R 317" -AssetName "Server01"
  • Set-LiCustomProperty –Name "InstDatum" –Value 15.02.2013 –AssetName "Server01"
  • Get-LiData | ? name –like DES* | Set-LiCustomProperty –Name "PreisInECent” –Value 97799

Abfragen von Eigenen Eigenschaften

Syntax: Get-LiCustomProperty -Name ‹String› [–AssetName ‹String›] [-InputObj ‹String[]›]

Liest den Wert einer eigenen Eigenschaft aus.

Parameter Erklärung Erforderlich?
-Name <String> Name der auszulesenden Eigenschaft ja
-AssetName <String> Name des Geräts, von dem die Eigenschaft ausgelesen werden soll ja

Beispiele:

  • Get-LiCustomProperty –Name "RaumNr" -AssetName "Server01"
  • Get-LiData| ? name –eq DESTINY | Get-LiCustomProperty –Name "InstDatum"

Leeren von Eigenen Eigenschaften

Syntax: Remove-LiCustomProperty -Name ‹String›

Leert alle Einträge bei der Eigenen Eigenschaft in der gesamten Datenbank.

Parameter Erklärung Erforderlich?
-Name <String> Name der zu leerenden Eigenschaft ja

Beispiel: Remove-LiCustomProperty –Name "RaumNr"

Einträge aus "Fehlerhafte Inventarisierung" Löschen

Syntax: Remove-LiInventoryInfo

Löscht Einträge aus der Abfrage "Fehlerhafte Inventarisierung".

Beispiel:

CD "\Failed Inventory"
get-lidata | ? targetname -like CL* | Remove-LiInventoryInfo

Journal-Eintrag Hinzufügen

Syntax: Add-LiJournalEntry -Subject ‹String› -Start ‹DateTime› [-End ‹DateTime›] [-Body ‹String›] [-AssetName ‹String›]

Fügt einen Journal-Eintrag hinzu mit den angegebenen Werten.

Beispiel:

get-lidata | ? name -like Des* | Add-LiJournalEntry -Subject Reparatur -Start 15.11.2018 -End 18.11.2018 -Body "CPU wurde getauscht"

Kombination von Befehlen

Wie in den Beispielen oben bereits dargestellt, können einzelne CmdLets kombiniert werden mithilfe der Pipe |. Damit wird die Ausgabe des links von der | stehenden Befehls als Eingabeparameter für das rechts stehende Kommando benutzt.

Beispiel-Aufgabe

„Ergänze in allen Assets, deren Name mit "DES" beginnt, eine Eigene Eigenschaft "PreisInEuroCent" mit dem Preis des Gerätes“:

Lösung:

PS LI:\> cd '\IT Inventory\Assets'
PS LI:\IT Inventory\Assets> Get-LiData  | where {$_.'name' like "DES*"} | Set-LiCustomProperty –Name "PreisInEuroCent" –Value 78999