Hosts-Datei erweitern

Dieses Powershell-Script hat Befehlszeilenoptionen für die Installation/Deinstallation.
Beim Uninstall werden zwei Zeilen gelöscht, die einem Muster entsprechen, bei der Installation werden zwei Zeilen ans Ende der Datei geschrieben.

Was mit VBS auch funktioniert, aber sehr umständlich ist, funktioniert mit den cmdlets der Powershell sehr einfach.

Get_Content liest die Datei ein. Über das Pipesymbol "|" wird der Inhalt beim UnInstall zweimal an Select-String -pattern übergeben und nur wenn der String nicht in das pattern passt, wird die entsprechende Zeile und letzten Endes die hosts neu geschrieben.

Beim Install wird geprüft ob eine Zeichenfolge schon vorhanden ist. Wenn ja,wertet das Script dies als "bereits installiert" und bricht ab.
Andernfalls werden zwei Zeilen and hosts angehängt.

Effektiv, oder?

param ($startoption)

if ($startoption -eq "UnInstall")
{
Get-Content C:\Windows\system32\drivers\etc\hosts |where {$_ | Select-String -pattern ("127.0.0.1 bealocalhost.de") -notmatch| Select-String -pattern ("127.0.0.1 local-service.bnotk.de") -notmatch} |Out-file C:\Windows\system32\drivers\etc\hosts
}

if ($startoption -eq "Install")
{
 if (Get-Content C:\Windows\system32\drivers\etc\hosts |where {$_ | Select-String -pattern ("127.0.0.1 bealocalhost.de") -simplematch} )
 {
 exit
 }
else
{
 "127.0.0.1 local-service.bnotk.de" |out-file C:\Windows\system32\drivers\etc\hosts -append -Encoding ascii
 "127.0.0.1 bealocalhost.de" |out-file C:\Windows\system32\drivers\etc\hosts -append -Encoding ascii
}
}
  • Donnerstag, 14 Juni 2018

Leave a comment

You are commenting as guest.