Как и обещал — простейший скрипт для открытия файла hosts на удалённой машине в домене без использования дополнительных модулей. Всё, что нужно — это ввести имя компьютера и пароль от своей учётной записи.
Файл hosts будет открыт в блокноте (тот который notepad.exe) с правами учётной записи текущего пользователя.
## Заголовок скрипта ##
[System.Console]::Title = "Файл hosts на удалённом компьютере"
$remotehost = Read-Host "Имя удалённого компьютера"
[System.Console]::Title = "Файл hosts на $remotehost"
## Проверка сетевого пути ##
function GetRemoteHostsPath
{
Param([Parameter(Mandatory=$true)]$ComputerName)
$ping = Test-Connection -ComputerName $ComputerName -Count 1 -Quiet
if ($ping)
{
$path = Test-Path -Path "\\$ComputerName\c$\windows\system32\drivers\etc\hosts" -PathType Leaf
if ($path) { return $true }
else { return $false }
}
else
{
return $false
}
}
## Открытие файла в блокноте ##
if (GetRemoteHostsPath -ComputerName $remotehost)
{
Start-Process -FilePath "$env:SystemRoot\system32\notepad.exe" `
-ArgumentList "\\$remotehost\c$\windows\system32\drivers\etc\hosts" `
-WindowStyle Normal -Credential $env:USERDOMAIN\$env:USERNAME
}
else
{
Write-Host "Что-то пошло не так!" -ForegroundColor Red
Sleep(10)
}
Разумеется, учётная запись должна быть объявлена членом группы администраторов домена. Очевидный плюс подхода с проверкой учётных данных на этапе запуска процесса notepad.exe: совсем не обязательно компилировать скрипт в исполняемый файл — достаточно просто выполнить PS1 в среде PowerShell со стандартным уровнем прав учётной записи.