Erläuterung
// Suchen & Ersetzen von Dateiinhalten mit Powershell //
Dieses Skript sucht nach dem „Suchbegriff“ in Klartext-Dateien (Dateien die nicht verschlüsselt oder codiert sind txt,html etc.) rekursiv durch die Unterverzeichnisse und ersetzt, falls gewünscht, die Inhalte der Dateien durch die eigens angegebenen.
$DateiTypen gibt den zu durchsuchenden DateiTyp an.
Wird nur der Parameter „SuchenNach“ angegeben, dann ersetzt das Skript nichts, sondern zeigt nur die Dateien die jeweils den gesuchten Begriff beinhalten an.
Skript
<# Author: Jan Weis Version: 0.1 Purpose: Sucht und Ersetzt Informationen in Dateien. #> param ( [Parameter(Mandatory = $true,Position = 0)][String]$Pfad, [Parameter(Mandatory = $true,Position = 1)][String]$SucheNach, [Parameter(Mandatory = $false,Position = 2)][String]$ErsetzeDurch ) [Int]$i = 0 $DateiTypen = '*.htm','*.html' Write-Host 'Durchsuche Verzeichnisse...' -NoNewline -ForegroundColor Yellow $Ordner = Get-ChildItem -Path $Pfad -Include $DateiTypen -Recurse -File Write-Host 'OK!' -ForegroundColor Green Write-Host "Gefundene Dateien: $($ordner.Count)" -ForegroundColor Yellow foreach ($Datei in $Ordner) { try { # Dateiinhalt auslesen [Array]$DateiInhalt = Get-Content -Path $Datei -Encoding UTF8 $i++ # Inhalt überprüfen und ersetzen if ($DateiInhalt -notlike '') { if (Select-String -InputObject $DateiInhalt -Pattern $SucheNach) { if ($ErsetzeDurch -like '') { Write-Host '' Write-Host "[-] Inhalt gefunden - '$($Datei.FullName)'" -ForegroundColor Yellow } else { [String]$Inhalt = $DateiInhalt $Inhalt = $Inhalt.Replace($SucheNach,$ErsetzenDurch) $Inhalt | Out-File -FilePath $Datei -Encoding utf8 Write-Host '' Write-Host "[-] Inhalt gefunden und geändert - '$($Datei.FullName)'" -ForegroundColor Yellow } } } if ($i -like '*00') { Write-Host '.' -NoNewline } } catch { "Error was $_" $line = $_.InvocationInfo.ScriptLineNumber "Error was in Line $line" } }