Войти

Показать полную графическую версию : Изменение параметров TCP/IP


rulesss2
15-07-2021, 12:23
Добрый день написал скрипт для изменения настроек сетевого адаптера. Проблема заключается в том, что когда в компьютере два адаптера 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
А зачем все эти текстбоксы? По каким критериям отбирается нужный адаптер?

rulesss2
15-07-2021, 13:55
в тестбоксах отображаются установленные параметры сети, а также в них можно изменять например ip-адрес и т,д. Настраивать сеть с нуля. Вот пример 164937

DJ Mogarych
15-07-2021, 13:58
То, что там отображается, я понимаю. Не понимаю, зачем вообще тут графический интерфейс, дублирующий уже и так существующий.

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

Elven
15-07-2021, 14:01
https://i.imgur.com/Ms28fE4.png

rulesss2
15-07-2021, 14:02
У меня на компьютерах невозможно просмотреть настройки без прав админа или что-то изменить. По этому я сделал интерфейс.

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

Elven
15-07-2021, 14:06
Network Configuration Operators?

rulesss2
15-07-2021, 14:12
Network Configuration Operators? » Домен.

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

rulesss2
15-07-2021, 14:26
ну так еще лучше. Через GPO добавляем доменную группу в builtin/Network Configuration Operators, а потом набрасываем в домене тех пользователей у которых должна быть эта группа. » У меня нет возможности. Я не администратор домена. Мне приходится для того чтобы что-то изменить, переключаться в свою уз. Быстрее через скрипт поменять.

DJ Mogarych
15-07-2021, 15:03
Ну о том и речь. По каким критериям вы выбираете интерфейс, который нужно конфигурировать?

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

alpap
15-07-2021, 15:20
применялись только на выбранном адаптере »

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

rulesss2
15-07-2021, 16:28
По каким критериям вы выбираете интерфейс, который нужно конфигурировать? »


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

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

DJ Mogarych
15-07-2021, 16:54
Я не о том. Как вы понимаете, что вам нужно настраивать именно этот адаптер, а не другой?

rulesss2
15-07-2021, 17:15
Я не о том. Как вы понимаете, что вам нужно настраивать именно этот адаптер, а не другой? »
Основной адаптер всегда стоит первым. К примеру: Ethernet 2 - основной, Ethernet 3 - дополнительный.

DJ Mogarych
15-07-2021, 17:19
Ну так выбирайте его сразу, зачем окошки-то.

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

rulesss2
15-07-2021, 17:31
Ну так выбирайте его сразу, зачем окошки-то. »
В этом случае всё равно будет задействовано 2 адаптера, потому что оба активны. Дополнительный адаптер RNDIS. на него расшарен интернет с основного адаптера.
По этому мне нужен выбор адаптера.

alpap
15-07-2021, 19:05
Я правильно понял как нужно сделать?

# Вывод инфы об адаптере
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
# Вывод инфы об адаптере
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 * - Этот код не будет работать для меня.




© OSzone.net 2001-2012