Hosts datei unter Windows 10 per batch kopieren

violentviper

Lt. Commander
Registriert
Mai 2008
Beiträge
1.661
Hallo,

ich möchte von einem Server die hosts Datei auf einem lokalen Client kopieren und ersetzen. Dies soll über die GPO und einem batch Startskript bewerkstelligt werden. Unter Windows 7 und älter hat das immer problemlos funktioniert. Unter Windows 10 scheint dies aber so in der Form nicht zu funktionieren. Das Startskript hat ja eigentlich Systemrechte, weswegen es mich wundert, warum die hosts Datei nicht kopiert wird. Schiebe ich die Hostsdatei in einen anderen Pfad, z.B in einen Unterordner ..etc\host_kopiert\.. führt er es anstandslos aus. Lediglich der etc Ordner und die hostsdatei scheint nochmals gesondert geschützt zu sein.

Daher die Frage, wie kann ich diesen Schutz aufheben, sodass die hostsdatei trotzdem hier kopiert und ersetzt wird? Den Parameter für geschützte Systemdateien /h und schreibgeschützt /r habe ich dabei.

Wenn man die Befehle händisch über die Konsole als Admin ausführt, dann kommt eine Sicherheitsabfrage, danach kopiert er es dann.
Bitte keine Grundsatzdiskussionen, ich weiß selbst, dass man das nicht unbedingt machen sollte :D.

Code:
xcopy //Serveradresse/Pfad/hostdatei c:\windows\system32\drivers\etc\ /h /r /y /C
 
Zuletzt bearbeitet:
hatte das gleiche problem mit einem Anit-Virus
das nochmals zusätzlich die hosts Datei schützt!

Bei dir vielleicht auch ein Problem?
 
  • Gefällt mir
Reaktionen: violentviper
Dir ist bewußt,das der Defender die modifizierte hosts Datei wieder mit der originalen ersetzt!
Vorher Ausschluß hinzufügen.
Ansonsten via Batchdatei,in Zeile 7 den Pfad zur "hosts.txt" editieren.
@Echo off
set ps1file=%temp%\add.ip.ps1
echo copy-item "%windir%\System32\Drivers\etc\hosts" "%windir%\System32\Drivers\etc\hosts.backup">%ps1file%
echo Function Hosts_Updater ^(^){>>%ps1file%
echo: >>%ps1file%
echo $a = Get-Content "%windir%\System32\Drivers\etc\hosts">>%ps1file%
echo $b = Get-Content "%Pfad%\hosts.txt">>%ps1file%
echo: >>%ps1file%
echo ForEach ^($i in $b^) {>>%ps1file%
echo $a += " $i">>%ps1file%
echo $a ^| Set-Content "%windir%\System32\Drivers\etc\hosts">>%ps1file%
echo }}>>%ps1file%
echo: >>%ps1file%
echo Hosts_Updater>>%ps1file%
powershell -executionpolicy remotesigned -File "%ps1file%"
if exist "%ps1file%" del /s /q "%ps1file%" >nul
exit
 
  • Gefällt mir
Reaktionen: violentviper
the_nobs schrieb:
hatte das gleiche problem mit einem Anit-Virus
das nochmals zusätzlich die hosts Datei schützt!
Bei dir vielleicht auch ein Problem?
Außer dem Windows Defender ist da kein Antivirus Programm aktiv.

bezelbube schrieb:
Dir ist bewußt,das der Defender die modifizierte hosts Datei wieder mit der originalen ersetzt!
Vorher Ausschluß hinzufügen.
Ansonsten via Batchdatei,in Zeile 7 den Pfad zur "hosts.txt" editieren.
@Echo off
set ps1file=%temp%\add.ip.ps1
echo copy-item "%windir%\System32\Drivers\etc\hosts" "%windir%\System32\Drivers\etc\hosts.backup">%ps1file%
echo Function Hosts_Updater ^(^){>>%ps1file%
echo: >>%ps1file%
echo $a = Get-Content "%windir%\System32\Drivers\etc\hosts">>%ps1file%
echo $b = Get-Content "%Pfad%\hosts.txt">>%ps1file%
echo: >>%ps1file%
echo ForEach ^($i in $b^) {>>%ps1file%
echo $a += " $i">>%ps1file%
echo $a ^| Set-Content "%windir%\System32\Drivers\etc\hosts">>%ps1file%
echo }}>>%ps1file%
echo: >>%ps1file%
echo Hosts_Updater>>%ps1file%
powershell -executionpolicy remotesigned -File "%ps1file%"
if exist "%ps1file%" del /s /q "%ps1file%" >nul
exit
Das würde das Verhalten erklären, guter Punkt. Muss ich gleich mal testen.

Funktioniert, danke!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: the_nobs und bezelbube
Zurück
Oben