Powershell: Get-RemoteProgram
mr.nice. 10.09.2015 - 15:30 2976 3
mr.nice.
differential image maker
|
Hallo Leute, ich bin unlängst auf ein echt tolles PowerShell Skript von Jaap Brasser gestoßen, Get-RemoteProgram, welches vom lokalen und auch im Netzwerk erreichbaren Windows PCs die installierte Software abfragen kann. Ich verwende es um veraltete Software ausfindig zu machen. Ich füttere es mit einer Liste von Computernamen und erhalte eine HTML-Datei mit den entsprechenden Ergebnissen. Hier zwei Code-Schnipsel für Selbermacher: Finde alte Java Versionen: Get-RemoteProgram -Property DisplayVersion,UninstallString,IsMinorUpgrade,ReleaseType,ParentDisplayName,SystemComponent -ComputerName (Get-Content .\\hostlist.txt) -ErrorAction SilentlyContinue | Where-Object {[string]$_.SystemComponent -ne 1 -and ![string]$_.IsMinorUpgrade -and ![string]$_.ReleaseType -and ![string]$_.ParentDisplayName -and $_.ProgramName -like "*Java*" -and $_.DisplayVersion -NotMatch "8.0.710.15"} | Sort-Object ComputerName | ConvertTo-Html ComputerName, ProgramName, DisplayVersion, UninstallString | Set-Content .\\old-Java.htm
Finde alte Flash Versionen: Get-RemoteProgram -Property DisplayVersion,UninstallString,IsMinorUpgrade,ReleaseType,ParentDisplayName,SystemComponent -ComputerName (Get-Content .\\hostlist.txt) -ErrorAction SilentlyContinue | Where-Object {[string]$_.SystemComponent -ne 1 -and ![string]$_.IsMinorUpgrade -and ![string]$_.ReleaseType -and ![string]$_.ParentDisplayName -and $_.ProgramName -like "*Adobe Flash Player*" -and $_.DisplayVersion -NotMatch "20.0.0.286"} | Sort-Object ComputerName | ConvertTo-Html ComputerName, ProgramName, DisplayVersion, UninstallString | Set-Content .\\old-Flash.htm
Get-RemoteProgram Download: https://gallery.technet.microsoft.c...-list-de9fd2b4/Die Versionsnummern müssen klarerweise immer an die aktuelle Version angepasst werden.
|
mr.nice.
differential image maker
|
Als kleine Zugabe hier das Skript mit dem ich eine Hostlist von Windows 7 PCs erzeuge: $hostlist = ".\\hostlist.txt"
if (Test-Path $hostlist)
{
Remove-Item $hostlist
}
Get-ADComputer -Filter {OperatingSystem -Like "Windows 7*"} -Property 'Name' | Select-Object -Property Name | Sort-Object Name >> hostlist.txt
(Get-Content hostlist.txt) | Foreach {$_.TrimEnd()} | where {$_ -ne ""} | Select-Object -Skip 2 | Set-Content hostlist.txt
Als erstes prüfe ich, ob es eine Datei hostlist.txt schon gibt und lösche sie gegebenenfalls, dann hole ich mir die Computernamen von den Windows 7 PCs, sortiere sie alphabetisch und schreibe das file. Dann bearbeite ich das Ergebnis, indem ich sämtlichen whitespace eleminiere und die ersten zwei Zeilen übergehe, da sie keine Rechnernamen enthalten und schreibe wieder hinaus. Damit wird dann Get-RemoteProgram gefüttert.
|
ill
...
|
Habe Code-Tags wieder entfernt, weil die \ verloren gehen. Die müsstest einfach mit einem zweiten Backslash escapen, dann werden sie angezeigt also $hostlist = ".\\hostlist.txt" wird zu $hostlist = ".\\hostlist.txt"
|
mr.nice.
differential image maker
|
Danke für den Hinweis, wirklich schöner wird's mit den Code-Tags leider auch nicht, aber ich lass es mal so stehen.
Bearbeitet von mr.nice. am 05.04.2016, 17:06
|