 |
|
Изменение параметров 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 |
А зачем все эти текстбоксы? По каким критериям отбирается нужный адаптер?
|
Вложений: 1
в тестбоксах отображаются установленные параметры сети, а также в них можно изменять например ip-адрес и т,д. Настраивать сеть с нуля. Вот пример Файл 164937
|
DJ Mogarych |
15-07-2021 13:58 2962208 |
То, что там отображается, я понимаю. Не понимаю, зачем вообще тут графический интерфейс, дублирующий уже и так существующий.
|
В этом заключается проблема, я пытаюсь сделать, чтобы можно было задавать критерии. Например: выбрав адаптер Ethernet 2 значения в текстбоксах отображались с него и менялись только на нём. Пока они меняются на обоих сразу.
|
У меня на компьютерах невозможно просмотреть настройки без прав админа или что-то изменить. По этому я сделал интерфейс.
Elven к чему это? Если вы не знаете для чего всё задумано??????
|
Network Configuration Operators?
|
Цитата:
Цитата Elven
Network Configuration Operators? »
|
Домен.
|
rulesss2, ну так еще лучше. Через GPO добавляем доменную группу в builtin/Network Configuration Operators, а потом набрасываем в домене тех пользователей у которых должна быть эта группа.
|
Цитата:
Цитата Elven
ну так еще лучше. Через GPO добавляем доменную группу в builtin/Network Configuration Operators, а потом набрасываем в домене тех пользователей у которых должна быть эта группа. »
|
У меня нет возможности. Я не администратор домена. Мне приходится для того чтобы что-то изменить, переключаться в свою уз. Быстрее через скрипт поменять.
|
DJ Mogarych |
15-07-2021 15:03 2962219 |
Ну о том и речь. По каким критериям вы выбираете интерфейс, который нужно конфигурировать?
Идея скрипта как средства автоматизации заключается в переносе рутинных действий на откуп машине, а здесь просто перерисовывается интерфейс.
|
Цитата:
Цитата rulesss2
применялись только на выбранном адаптере »
|
Код:
$vAdapter = Get-NetAdapter|? Name -eq 'Выбранное имя адаптера'
$vAdapter|Select *
|
Цитата:
Цитата 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 |
Я не о том. Как вы понимаете, что вам нужно настраивать именно этот адаптер, а не другой?
|
Цитата:
Цитата DJ Mogarych
Я не о том. Как вы понимаете, что вам нужно настраивать именно этот адаптер, а не другой? »
|
Основной адаптер всегда стоит первым. К примеру: Ethernet 2 - основной, Ethernet 3 - дополнительный.
|
DJ Mogarych |
15-07-2021 17:19 2962236 |
Ну так выбирайте его сразу, зачем окошки-то.
Код:
(Get-NetAdapter |? status -eq "up" |sort name)[0]
|
Цитата:
Цитата DJ Mogarych
Ну так выбирайте его сразу, зачем окошки-то. »
|
В этом случае всё равно будет задействовано 2 адаптера, потому что оба активны. Дополнительный адаптер RNDIS. на него расшарен интернет с основного адаптера.
По этому мне нужен выбор адаптера.
|
Цитата:
Я правильно понял как нужно сделать?
|
Код:
# Вывод инфы об адаптере
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
|
Цитата:
Цитата 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.
© OSzone.net 2001-