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