Я на 100% согласен с тем, что всегда делаю копию критически важных файлов, прежде чем что-то делать с ней.
$HostFile = Get-ChildItem -Path 'C:\Windows\System32\drivers\etc\hosts'
<#
Directory: C:\Windows\System32\drivers\etc
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 18-Mar-19 21:49 824 hosts
#>
Copy-Item -Path $HostFile.FullName -Destination "$($HostFile.DirectoryName)\$($HostFile.Name)_$(Get-Date -Format 'ddMMyyyy@HHmm')" -WhatIf
<#
What if: Performing the operation "Copy File" on target "Item: C:\Windows\System32\drivers\etc\hosts Destination: C:\Windows\System32\drivers\etc\hosts_2102202
0@1602".
#>
Сложнее добавить против удаления, я не настолько согласен. Так как это просто текстовый файл, важный, но только текстовый файл ...
- Чтение файла как обычно
- выделение всей строки с целевым строковым шаблоном
- Удалить эту строку
- Создать новую строку, чтобы добавить
- Добавить строку.
.. против встроенного в эту строку материала.
# Find the line
Get-Content -Path 'C:\Windows\System32\drivers\etc\hosts' |
Select-String -Pattern '\d.*localhost.*'
<#
# 127.0.0.1 localhost
# ::1 localhost
#>
# Remove the line
(Get-Content -Path 'C:\Windows\System32\drivers\etc\hosts' |
Select-String -Pattern '\d.*localhost.*') -replace ''
# Add a line
Add-Content -Path 'C:\Windows\System32\drivers\etc\hosts' -Value ' 151.101.193.69 stackoverflow.com'
# Or just this
$HostFile = Get-ChildItem -Path 'C:\Windows\System32\drivers\etc\hosts'
Copy-Item -Path $HostFile.FullName -Destination "$($HostFile.DirectoryName)\$($HostFile.Name)_$(Get-Date -Format 'ddMMyyyy@HHmm')"
(Get-Content -Path 'C:\Windows\System32\drivers\etc\hosts' |
Select-String -Pattern '\d.*localhost.*') -replace '', ' 151.101.193.69 stackoverflow.com'
Да, и кстати, это уже какое-то время существовало через MS powershellgallery.com, так что нет реальной необходимости делать это с нуля, если это не было учебным процессом.
Find-Module -Name '*hostfile*' | Format-Table -AutoSize
<#
Version Name Repository Description
------- ---- ---------- -----------
1.0.2 Web.Helper.HostFile PSGallery Helper to manage the Windows host file
1.0.3 Add-HostFileEntry PSGallery Adds and removes entries from the HOSTS file
1.0 HostFile PSGallery Helper commands to interact with host file
#>
Изменить Добавить, Удалить - Windows Файл Хостов Локально и Удаленно - PowerShell
Вы можете Изменить, Добавить - Удалить - Windows Хост Файл Файл Локально и Удаленно, используя этот скрипт PowerShell. Этот сценарий состоит из 4 частей. # 1-я часть посвящена добавлению записей хостов на локальном компьютере или мы можем развернуть их с помощью сценария входа в gpo. # 2-я часть предназначена для изменения, замены или удаления любой записи хоста. Скачать: modifyhost.ps1