PowerShell Scanne und Filter Software im Netzwerk
Hallo zusammen,
irgendwie komme ich bei der Fehlermeldung nicht weiter.
Ich versuche hier in einem Script, die installierte Software im Netzwerk zu scannen und in eine Datei auszugeben.
Für diesen Fall würde ich gerne nur sehen, wo Office Professional installiert. Am liebsten wäre mir natürlich, alle verschiedene Office Versionen zu finden - aber soweit bin ich noch nicht.
In meinem Skript werden die Computernamen / IP-Adressen aus einer .txt genommen und in eine CSV exportiert. Das funktioniert soweit ganz ok.
Hier bekomme ich als Ausgabe natürlich auch ziemlich viel Müll, der mich nicht so interessiert.
Sobald ich anstatt '%Office%' '%Office Professional%' nehme, bekomme ich eine Fehlermeldung.
Und in der CSV-Datei wird dann auch nur der erste Computer aus der .txt angezeigt.
Wenn ich das jetzt ohne Skript macht und einfach in die PS eingebe, funktioniert es.
Also so:
Da hängt es schon seit Ewigkeiten.
irgendwie komme ich bei der Fehlermeldung nicht weiter.
Ich versuche hier in einem Script, die installierte Software im Netzwerk zu scannen und in eine Datei auszugeben.
Für diesen Fall würde ich gerne nur sehen, wo Office Professional installiert. Am liebsten wäre mir natürlich, alle verschiedene Office Versionen zu finden - aber soweit bin ich noch nicht.
In meinem Skript werden die Computernamen / IP-Adressen aus einer .txt genommen und in eine CSV exportiert. Das funktioniert soweit ganz ok.
$Eingabedateiname = "computernamen.txt"
$Ausgabedateiname = "Software.csv"
# Import der Computernamen
$Computernamen = Get-Content "computernamen.txt"
$Computernamen | foreach {
Write-Host "Scanne Software für Computer $_ ..."
# Auslesen der Software
$Software += foreach-object { get-wmiobject Win32_Product -Filter "Caption like '%Office%'" -computername $_ | Select-Object -Property PSComputerName, Name }
}
# Export in CSV
$Software | export-csv "Software.csv" -notypeinformation
Hier bekomme ich als Ausgabe natürlich auch ziemlich viel Müll, der mich nicht so interessiert.
Sobald ich anstatt '%Office%' '%Office Professional%' nehme, bekomme ich eine Fehlermeldung.
Fehler beim Aufrufen der Methode, da [System.Management.Automation.PSObject] keine Methode mit dem Namen "op_Addition"
enthält.
Wenn ich das jetzt ohne Skript macht und einfach in die PS eingebe, funktioniert es.
Also so:
get-wmiobject Win32_Product -Filter "Caption like '%Office Prof%'" -computername 192.168.178.2, 192.168.178.3 | Select-Object -Property PSComputerName, Name
Da hängt es schon seit Ewigkeiten.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 552666
Url: https://administrator.de/contentid/552666
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Die Klasse win32_Product ist böse und sollte man aus diversen Gründen auch nicht dafür nutzen!
Der Grund ist das die Klasse beim Aufruf für sämtliche Produkte ein Installer-Refresh initiiert der erstens sehr lange dauern kann und man damit sogar manche Produkte zurücksetzen oder in manchen Fällen sogar in einen inkonsistenten Zustand versetzen kann.
Außerdem erfasst Win32_Product auch nicht sämtliche installierten Produkte.
Aus diesen Gründen nutzt man heute bevorzugt die Registry wenn man wirklich alle installierten Programme zuverlässig erfassen möchte, Beispiele wie man das macht finden sich hier im Forum, wie z.B. In diesem Beitrag
Mit Powershell in der Reg. auslesen um den UninstallString zu bekommen
Der Grund ist das die Klasse beim Aufruf für sämtliche Produkte ein Installer-Refresh initiiert der erstens sehr lange dauern kann und man damit sogar manche Produkte zurücksetzen oder in manchen Fällen sogar in einen inkonsistenten Zustand versetzen kann.
Außerdem erfasst Win32_Product auch nicht sämtliche installierten Produkte.
Aus diesen Gründen nutzt man heute bevorzugt die Registry wenn man wirklich alle installierten Programme zuverlässig erfassen möchte, Beispiele wie man das macht finden sich hier im Forum, wie z.B. In diesem Beitrag
Mit Powershell in der Reg. auslesen um den UninstallString zu bekommen
Zitat von @Naleor:
Wobei ich auch die Erfahrung gemacht habe, dass manche Programme zwar deinstalliert sind, aber immer noch ein Eintrag in der Registry hängt.
Das lässt sich aber leicht mit einer Prüfung (Test-Path) checken, besser so als das Win32_Product überhaupt nichts von den Installationen mitteilt.Wobei ich auch die Erfahrung gemacht habe, dass manche Programme zwar deinstalliert sind, aber immer noch ein Eintrag in der Registry hängt.