Сценарий Powershell для очистки текста после строки localhost и добавления статического имени узла и текущего ip-адреса в файл

необходимо очистить весь текст после строки 127.0.0.1 localhost файла хоста в PowerShell. последняя строка-это запись localhost в файл host после этой строки я хотел бы удалить все текстовые строки можно. Ниже приведен соответствующий код.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted 

$ip = get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1} 

$ip.ipaddress[0]
$hst = $env:COMPUTERNAME
$hostfile = Get-Content "$($env:windir)system32Driversetchosts"
if ($hostfile -notcontains "127.0.0.2 hostname1" -and 
    (-not($hostfile -like "$($ip.ipaddress[0]) $hst"))) {
    Add-Content -Encoding UTF8 "$($env:windir)system32Driversetchosts" "$($ip.ipaddress[0]) $hst" 
}
11
задан Seth
11.12.2022 12:05 Количество просмотров материала 2462
Распечатать страницу

1 ответ

этот скрипт удаляет что-либо после 127.0.0.1 localhost и сохраняет его в файл. В случае, если ваши условия решают быть истинными, новая запись вводится, прежде чем файл записывается обратно на диск.

код:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted 

$ipAdresses = Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress.length -gt 0} | Select-Object -Property 'IPAddress' -First 1

$ip = $ipAdresses.IPAddress[0]
$hst = $env:COMPUTERNAME
$hostFilePath = "$($env:windir)\system32\Drivers\etc\hosts"
$hostfile = Get-Content -Path $hostFilePath
$newHostFileEntry = "{0} {1}" -f $ip, $hst

# Delete all text after what is defined as $matchString
$lastIndexOfNewArray = 0
$matchString = '127.0.0.1\s+localhost'

for ($index = 0; $index -lt $hostfile.Count; $index++) {
    if ($hostfile[$index] -match $matchString) {
        $lastIndexOfNewArray = $index
        break
    }
}
$newHostFileContent = $Hostfile[0..$lastIndexOfNewArray]

# Adds entry for local IP address if conditions resolve to $true
if ($newHostFileContent -notcontains "127.0.0.2 hostname1" -and 
    (-not($newHostFileContent -like $newHostFileEntry))) {
        $newHostFileContent = New-Object System.Collections.ArrayList(,$newHostFileContent)
        $newHostFileContent.Add($newHostFileEntry) > $null
}

Out-File -Encoding UTF8 -FilePath $hostFilePath -InputObject $newHostFileContent -Append:$false -Confirm:$false
0
отвечен Kevin K. 2022-12-12 19:53

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх