Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Изменение параметров TCP/IP (http://forum.oszone.net/showthread.php?t=349213)

rulesss2 15-07-2021 12:23 2962192

Изменение параметров TCP/IP
 
Вложений: 2
Добрый день написал скрипт для изменения настроек сетевого адаптера. Проблема заключается в том, что когда в компьютере два адаптера Файл 164935 значения изменяются сразу на обоих адаптерах.

Также в поле маска ошибка Файл 164936 Когда отключаю один из адаптеров маска отображается.

Вот пример моего кода.

Код:

# Сетевой адаптер
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Text = "Сетевой адаптер:"
$objLabel.Location = New-Object System.Drawing.Point(10,12)
$objLabel.AutoSize = $true
$objmain_form.Controls.Add($objLabel)


$objComboBox_Adapter = New-Object System.Windows.Forms.ComboBox
$objComboBox_Adapter.Location  = New-Object System.Drawing.Point(110,9)
$objComboBox_Adapter.TabIndex = 1
$objComboBox_Adapter.DropDownStyle = [System.Windows.Forms.ComboBoxStyle]::DropDownList;
$objmain_form.Controls.Add($objComboBox_Adapter)

#Маска
$objLabel_Mask = New-Object System.Windows.Forms.Label
$objLabel_Mask.Text = "Маска:"
$objLabel_Mask.Location  = New-Object System.Drawing.Point(15,85)
$objLabel_Mask.AutoSize = $true
$objmain_form.Controls.Add($objLabel_Mask)

$objTextBox_Mask = New-Object System.Windows.Forms.TextBox
$objTextBox_Mask.Location = New-Object System.Drawing.Point(60,83)
$objTextBox_Mask.Text = '0.0.0.0'
$objTextBox_Mask.TabIndex = 1
$objmain_form.Controls.Add($objTextBox_Mask)

# Вывод инфы об адаптере
if ($objComboBox_Adapter){
  $Adapters = Get-NetAdapter | Foreach Name
  Foreach($Adapter in $Adapters){
        $strAdapter= $Adapter
        $objComboBox_Adapter.Items.AddRange($Adapter)
    $objComboBox_Adapter.SelectedItem = "$Adapter"
       
    #Отключение Dhcp и ip6
    Set-NetIPInterface -InterfaceAlias "$Adapter" -Dhcp Disabled
    Get-NetAdapterBinding -InterfaceAlias "$Adapter" | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6 
  }
}


#Маска вывод в TextBox
if ($objTextBox_Mask){ 
  $MaskBits = Get-NetAdapter | Get-NetIpAddress  | Select-Object -ExpandProperty "PrefixLength"
  $objTextBox_Mask.Text = $MaskBits.ToString();
}

#Кнопка применить
$objbutton_Ok.Add_Click({

    if ($objTextBox_Mask.Text){
      $MaskBits = $objTextBox_Mask.Text 
      Set-NetIPAddress -InterfaceIndex $Zn -PrefixLength $MaskBits
    }

})

Пытаюсь сделать, чтобы при переключении в поле ComboBox адаптера настройки применялись только на выбранном адаптере и обновлялись значения в TextBox.

DJ Mogarych 15-07-2021 13:45 2962205

А зачем все эти текстбоксы? По каким критериям отбирается нужный адаптер?

rulesss2 15-07-2021 13:55 2962206

Вложений: 1
в тестбоксах отображаются установленные параметры сети, а также в них можно изменять например ip-адрес и т,д. Настраивать сеть с нуля. Вот пример Файл 164937

DJ Mogarych 15-07-2021 13:58 2962208

То, что там отображается, я понимаю. Не понимаю, зачем вообще тут графический интерфейс, дублирующий уже и так существующий.

rulesss2 15-07-2021 13:59 2962209

В этом заключается проблема, я пытаюсь сделать, чтобы можно было задавать критерии. Например: выбрав адаптер Ethernet 2 значения в текстбоксах отображались с него и менялись только на нём. Пока они меняются на обоих сразу.

Elven 15-07-2021 14:01 2962210

не удержался

rulesss2 15-07-2021 14:02 2962211

У меня на компьютерах невозможно просмотреть настройки без прав админа или что-то изменить. По этому я сделал интерфейс.

Elven к чему это? Если вы не знаете для чего всё задумано??????

Elven 15-07-2021 14:06 2962213

Network Configuration Operators?

rulesss2 15-07-2021 14:12 2962214

Цитата:

Цитата Elven
Network Configuration Operators? »

Домен.

Elven 15-07-2021 14:18 2962215

rulesss2, ну так еще лучше. Через GPO добавляем доменную группу в builtin/Network Configuration Operators, а потом набрасываем в домене тех пользователей у которых должна быть эта группа.

rulesss2 15-07-2021 14:26 2962216

Цитата:

Цитата Elven
ну так еще лучше. Через GPO добавляем доменную группу в builtin/Network Configuration Operators, а потом набрасываем в домене тех пользователей у которых должна быть эта группа. »

У меня нет возможности. Я не администратор домена. Мне приходится для того чтобы что-то изменить, переключаться в свою уз. Быстрее через скрипт поменять.

DJ Mogarych 15-07-2021 15:03 2962219

Ну о том и речь. По каким критериям вы выбираете интерфейс, который нужно конфигурировать?

Идея скрипта как средства автоматизации заключается в переносе рутинных действий на откуп машине, а здесь просто перерисовывается интерфейс.

alpap 15-07-2021 15:20 2962222

Цитата:

Цитата rulesss2
применялись только на выбранном адаптере »

Код:

$vAdapter = Get-NetAdapter|? Name -eq 'Выбранное имя адаптера'
$vAdapter|Select *


rulesss2 15-07-2021 16:28 2962229

Цитата:

Цитата DJ Mogarych
По каким критериям вы выбираете интерфейс, который нужно конфигурировать? »

Код:

if ($objTextBox_ip){
  $ip = (Get-NetAdapter -Name $Adapter | Get-NetIPAddress).IPv4Address
  $objTextBox_ip.Text = $ip.ToString();
}

$Adapter - Вот переменная которая содержит список адаптеров.


DJ Mogarych 15-07-2021 16:54 2962233

Я не о том. Как вы понимаете, что вам нужно настраивать именно этот адаптер, а не другой?

rulesss2 15-07-2021 17:15 2962235

Цитата:

Цитата DJ Mogarych
Я не о том. Как вы понимаете, что вам нужно настраивать именно этот адаптер, а не другой? »

Основной адаптер всегда стоит первым. К примеру: Ethernet 2 - основной, Ethernet 3 - дополнительный.

DJ Mogarych 15-07-2021 17:19 2962236

Ну так выбирайте его сразу, зачем окошки-то.
Код:

(Get-NetAdapter |? status -eq "up" |sort name)[0]

rulesss2 15-07-2021 17:31 2962237

Цитата:

Цитата DJ Mogarych
Ну так выбирайте его сразу, зачем окошки-то. »

В этом случае всё равно будет задействовано 2 адаптера, потому что оба активны. Дополнительный адаптер RNDIS. на него расшарен интернет с основного адаптера.
По этому мне нужен выбор адаптера.

alpap 15-07-2021 19:05 2962242

Цитата:

Я правильно понял как нужно сделать?
Код:

# Вывод инфы об адаптере
if ($objComboBox_Adapter){
  $Adapters = Get-NetAdapter | Foreach Name
  Foreach($Adapter in $Adapters){
        $strAdapter= $Adapter
        $objComboBox_Adapter.Items.AddRange($Adapter)
        $objComboBox_Adapter.SelectedItem = "$Adapter"
        $vAdapter = Get-NetAdapter | ? Name -eq 'Выбранное имя адаптера'
      $vAdapter | Select *
  }
}

нет, неправильно
если делаете какие-то операции для одного конкретного адаптера, то естественно знаете его имя, соответственно указываете его в переменной для удобства и работаете конкретно с этим адаптером, вроде же ясно как божий день.
Код:

$adapterLAN = 'Адаптер для LAN например'

# Get-NetIPConfiguration -InterfaceAlias $adapterLAN -Detailed
Set-NetIPAddress -InterfaceAlias $adapterLAN -IPAddress 192.168.1.100
Set-NetIPInterface -InterfaceAlias $adapterLAN -Dhcp Disabled
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceAlias $adapterLAN
Get-NetAdapterBinding -InterfaceAlias $adapterLAN|Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
# если надо подставить куда-то какие-то свойства, например MAC адрес
$objectadapterLAN = Get-NetAdapter | ? Name -eq $adapterLAN
$objectadapterLAN.MacAddress


rulesss 19-07-2021 22:57 2962485

Цитата:

Цитата alpap (Сообщение 2962242)
Код:

# Вывод инфы об адаптере
if ($objComboBox_Adapter){
  $Adapters = Get-NetAdapter | Foreach Name
  Foreach($Adapter in $Adapters){
        $strAdapter= $Adapter
        $objComboBox_Adapter.Items.AddRange($Adapter)
        $objComboBox_Adapter.SelectedItem = "$Adapter"
        $vAdapter = Get-NetAdapter | ? Name -eq 'Выбранное имя адаптера'
      $vAdapter | Select *
  }
}

нет, неправильно
если делаете какие-то операции для одного конкретного адаптера, то естественно знаете его имя, соответственно указываете его в переменной для удобства и работаете конкретно с этим адаптером, вроде же ясно как божий день.
Код:

$adapterLAN = 'Адаптер для LAN например'

# Get-NetIPConfiguration -InterfaceAlias $adapterLAN -Detailed
Set-NetIPAddress -InterfaceAlias $adapterLAN -IPAddress 192.168.1.100
Set-NetIPInterface -InterfaceAlias $adapterLAN -Dhcp Disabled
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceAlias $adapterLAN
Get-NetAdapterBinding -InterfaceAlias $adapterLAN|Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
# если надо подставить куда-то какие-то свойства, например MAC адрес
$objectadapterLAN = Get-NetAdapter | ? Name -eq $adapterLAN
$objectadapterLAN.MacAddress


У меня два адаптера на каждом компьютере разное название адаптеров. Я вроде подробно описал.
$vAdapter = Get-NetAdapter | ? Name -eq 'Выбранное имя адаптера'
$vAdapter | Select * - Этот код не будет работать для меня.


Время: 07:14.

Время: 07:14.
© OSzone.net 2001-