141128
May 04, 2021
1698
2
0
Powershell Pipe filtern nach Textdatei Blockliste
Hallo Miteinander,
Ich versuche ein Powershellskript zu erstellen das alle installierten Programme ausliest, etwas sortiert und dann als txt Datei ausgibt.
Leider schmeißen einige Entwickler, vorallem Microsoft, recht viel, für mich in dem Fall, Müll in die Quelle. Darum möchte ich einige Einträge anhand einer Blockliste entfernen.
Ich habe zuerst einige allgemeinere Strings als Filter im Skript selber in Variablen geschrieben, aber es sind noch einige Einträge drinnen die keinen allgemeinen Mustern folgen und daher so nicht erfasst werden können. Darum möchte ich umsteigen und in der Pipe auf den Inhalt einer txt datei hin Filtern, das gelingt mir aber leider nicht...
Ich versuche ein Powershellskript zu erstellen das alle installierten Programme ausliest, etwas sortiert und dann als txt Datei ausgibt.
Leider schmeißen einige Entwickler, vorallem Microsoft, recht viel, für mich in dem Fall, Müll in die Quelle. Darum möchte ich einige Einträge anhand einer Blockliste entfernen.
Ich habe zuerst einige allgemeinere Strings als Filter im Skript selber in Variablen geschrieben, aber es sind noch einige Einträge drinnen die keinen allgemeinen Mustern folgen und daher so nicht erfasst werden können. Darum möchte ich umsteigen und in der Pipe auf den Inhalt einer txt datei hin Filtern, das gelingt mir aber leider nicht...
$ignore1="Microsoft Visual C++"; $ignore2="Microsoft .NET"; $ignore3="vs_"; $ignore4="Microsoft Windows Desktop Runtime"; $ignore5="NVIDIA"; $ignore6="Microsoft ASP.NET"
$Outputfile="C:\...\temp\test.txt"
$Filterfile="C:\...\Skripts\Funktionen\blocklist.txt"
$List64 = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, Publisher, DisplayVersion, InstallDate
$List32 = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, Publisher, DisplayVersion, InstallDate
$List = $List64 + $List32
$filters = Get-Content $filterFile
$List | Where-Object DisplayName |
Where-Object {($_.DisplayName -notlike "$ignore1*") -and ($_.DisplayName -notlike "$ignore2*") -and ($_.DisplayName -notlike "$ignore3*") -and ($_.DisplayName -notlike "$ignore4*") -and ($_.DisplayName -notlike "$ignore5*") -and ($_.DisplayName -notlike "$ignore6*")} |
Where-Object DisplayName | Sort-Object -Property Publisher | Format-Table > $Outputfile
Please also mark the comments that contributed to the solution of the article
Content-Key: 666403
Url: https://administrator.de/contentid/666403
Printed on: April 24, 2024 at 17:04 o'clock
2 Comments
Latest comment
# Pfad zur Liste mit untereinander stehenden Begriffen
$ignorelist = 'C:\pfad\blocklist.txt'
# Regex Pattern aus Liste erstellen
$ignore_pattern = (gc $ignorelist | %{[regex]::Escape($_)}) -join '|'
# Object nach Pattern filtern
$list | ?{$_.DisplayName -notmatch $ignore_pattern}