Alex_Geer
@Alex_Geer
System Engineer

Почему стирает файл?

Всем добрый вечер пятницы. Я написал скриптец на обновление записей в файле host.
Но не могу понять в чем ошибка. При первом запуске прописываются строки. При втором выходит ошибка либо что файл занят другим процессом или что поток чтения не доступен и почему то все содиржимое стирается к хренам.
$hostsFile = "$env:windir\System32\drivers\etc\hosts"
$ipAddress1 = "192.72.22.200"
$hostName1 = "test1.pro"
$ipAddress2 = "192.72.22.201"
$hostName2 = "test2.pro"

# Получаем текущее содержимое файла hosts
$hostsContent = Get-Content $hostsFile

# Удаляем все записи для test1.pro и записываем новые
$hostsContent = $hostsContent | Where-Object { $_ -notmatch "$hostName1" }
$hostsContent += "$ipAddress1`t$hostName1"

# Удаляем все записи для test2.pro и записываем новые
$hostsContent = $hostsContent | Where-Object { $_ -notmatch "$hostName2" }
$hostsContent += "$ipAddress2`t$hostName2"

# Записываем изменения в файл hosts
Set-Content -Path $hostsFile -Value $hostsContent
Write-Output "Записи обновлены в hosts."
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
@NortheR73
системный инженер
Set-Content -Path $hostsFile -Value $hostsContent

замените на
$hostsContent | Out-File $hostsFile -Encoding ascii -Force
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BeatHazard
Проверил, все корректно отрабатывает, файл hosts не очищается и с логикой проблем не вижу, может еще что-то выполняется помимо этого кода?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы