Какой командлет использовать для удаленной смены статических IP win 2008r2?

Необходимо автоматизировать процесс смены IP адресов. C powershell только начал знакомится помогите исправить скрипт что бы работало на Win Server 2008 r2.
$vybor = Read-Host "Выбирете группу компьютеров: 1: 80-81; 2: 82-83; 3: 84-85; 4: 86-87"

#Постоянные переменные
$NewGateway = '10.247.1.254'
$TempIPAddress ='10.247.0.99'
$NewNetMask = '23'
$NewDNS1 = '10.76.0.163'
$NewDNS2 = '10.76.0.64'


#Переменные после выбора
if ($vybor -eq 1)
{
    $IPAddress = '10.247.0.80'
    $NewIPAddress = '10.247.0.81'
    $InetrfaceName1 = 'local area connection 7'
    $InetrfaceName2 = 'local area connection 7'
}
if ($vybor -eq 2)
{
    $IPAddress = '10.247.0.82'
    $NewIPAddress = '10.247.0.83'
    $InetrfaceName1 = 'local area connection 7'
    $InetrfaceName2 = 'local area connection 7'
}
if ($vybor -eq 3)
{
    $IPAddress = '10.247.0.84'
    $NewIPAddress = '10.247.0.85'
    $InetrfaceName1 = 'local area connection 7'
    $InetrfaceName2 = 'local area connection 7'
}
if ($vybor -eq 4)
{
    $IPAddress = '10.247.0.86'
    $NewIPAddress = '10.247.0.87'
    $InetrfaceName1 = 'local area connection 7'
    $InetrfaceName2 = 'local area connection 7'
}
Write-Host "Выбраны компьютеры с IP-адресами $IPAddress и $NewIPAddress" 


#Скрипт смены адреса

#Проверяем занятость 1 айпи адреса
if (Test-Connection -ComputerName $IPAddress -Count 1 -Quiet)
{
    #Если 1 айпи адрес занят, то проверяем занят ли 2 адрес
    if (Test-Connection -ComputerName $NewIPAddress -Count 1 -Quiet)
    {
        Write-Host "Меняем на компьютере $IPAddress IP-адрес интерфейса $InetrfaceName1 с основного адреса $IPAddress на временный адрес $TempIPAddress" 
        invoke-command -computername $IPAddress {SmenaIPServera ($InetrfaceName, $IPAddress, $TempIPAddress, $NewNetMask, $NewGateway, $NewDNS1, $NewDNS2)}
        #Проверяем освободился ли 1 айпи адрес
        if (-not (Test-Connection -ComputerName $IPAddress -Count 1 -Quiet))
        {
            Write-Host "Меняем на компьютере $NewIPAddress IP-адрес интерфейса $InetrfaceName2 с основного адреса $NewIPAddress на адрес $IPAddress" 
            invoke-command -computername $NewIPAddress {SmenaIPServera ($InetrfaceName2, $NewIPAddress, $IPAddress, $NewNetMask, $NewGateway, $NewDNS1, $NewDNS2)}
        }
        #Проверяем освободился ли 2 айпи адрес
        if (-not (Test-Connection -ComputerName $NewIPAddress -Count 1 -Quiet))
        {
            Write-Host "Меняем на компьютере $TempIPAddress IP-адрес интерфейса $InetrfaceName1 с временного адреса $TempIPAddress на адрес $NewIPAddress" 
            invoke-command -computername $TempIPAddress {SmenaIPServera ($InetrfaceName1, $TempIPAddress, $NewIPAddress, $NewNetMask, $NewGateway, $NewDNS1, $NewDNS2)}
        }
    }
    else
    {
        Write-Host "Недоступен компьютер с IP-адресом $NewIPAddress" 
    }
}
else
{
    Write-Host "Недоступен компьютер с IP-адресом $IPAddress" 
}

function SmenaIPServera ($InetrfaceName, $IP2, $IP1, $NewNetMask, $NewGateway, $NewDNS1, $NewDNS2)
{
    $NetAdapter = Get-NetAdapter -Name $InetrfaceName
    $NetAdapter | New-NetIPAddress -IPAddress $IP1 -PrefixLength $NewNetMask
    $NetAdapter | Remove-NetIPAddress -IPAddress $IP2 -PrefixLength $NewNetMask -Confirm:$false
    $NetAdapter | Set-NetRoute -NextHop  $NewGateway
    $NetAdapter | Set-DnsClientServerAddress -ServerAddresses $NewDNS1,$NewDNS2   
}
  • Вопрос задан
  • 451 просмотр
Пригласить эксперта
Ответы на вопрос 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
$NetAdapter = Get-NetAdapter -Name $InetrfaceName
$NetAdapter | New-NetIPAddress -IPAddress $IP1 -PrefixLength $NewNetMask
$NetAdapter | Remove-NetIPAddress -IPAddress $IP2 -PrefixLength $NewNetMask -Confirm:$false
$NetAdapter | Set-NetRoute -NextHop $NewGateway
$NetAdapter | Set-DnsClientServerAddress -ServerAddresses $NewDNS1,$NewDNS2

https://technet.microsoft.com/en-us/library/jj1308...
Обратите внимание, что командлеты работы с сетью зачастую доступны только, начиная с windows 8\server 2012
По приведенной ссылке на technet, например, видно, что get-netadapter доступен начиная с 8.1\2012 R2

Для реализации вашего функционала в windows 7\server 2008 нужно или использовать netsh (пусть и в powershell скрипте) или через wmi
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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