
141128
04.05.2021
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666403
Url: https://administrator.de/forum/powershell-pipe-filtern-nach-textdatei-blockliste-666403.html
Ausgedruckt am: 14.07.2025 um 06:07 Uhr
2 Kommentare
Neuester Kommentar

# 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}