Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Изменение параметров TCP/IP

Ответить
Настройки темы
PowerShell - Изменение параметров TCP/IP

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: rulesss2
Дата: 15-07-2021
Добрый день написал скрипт для изменения настроек сетевого адаптера. Проблема заключается в том, что когда в компьютере два адаптера 1.png значения изменяются сразу на обоих адаптерах.

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

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

Код: Выделить весь код
 # Сетевой адаптер
$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.

Отправлено: 12:23, 15-07-2021

 

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:26, 15-07-2021 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


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

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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 15:03, 15-07-2021 | #12


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата rulesss2:
применялись только на выбранном адаптере »
Код: Выделить весь код
$vAdapter = Get-NetAdapter|? Name -eq 'Выбранное имя адаптера'
$vAdapter|Select *
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 15-07-2021 | #13


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
По каким критериям вы выбираете интерфейс, который нужно конфигурировать? »
Код: Выделить весь код
if ($objTextBox_ip){
  $ip = (Get-NetAdapter -Name $Adapter | Get-NetIPAddress).IPv4Address
  $objTextBox_ip.Text = $ip.ToString(); 
}

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

Отправлено: 16:28, 15-07-2021 | #14


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:54, 15-07-2021 | #15


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:15, 15-07-2021 | #16


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Ну так выбирайте его сразу, зачем окошки-то.
Код: Выделить весь код
(Get-NetAdapter |? status -eq "up" |sort name)[0]

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 17:19, 15-07-2021 | #17


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:31, 15-07-2021 | #18


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата:
Я правильно понял как нужно сделать?
Код: Выделить весь код
# Вывод инфы об адаптере
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, 15-07-2021 в 19:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:05, 15-07-2021 | #19


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 22:57, 19-07-2021 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Изменение параметров TCP/IP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Изменение параметров компьютера Kolplion Microsoft Windows 8 и 8.1 1 07-10-2014 18:43
Интернет - Оптимизация параметров TCP/IP протокола в Windows 7 Барсук Microsoft Windows 7 1 21-10-2010 18:06
Любой язык - [решено] удаленной изменение tcp/ip настроек hnsk Скриптовые языки администрирования Windows 6 03-09-2009 10:58
[решено] Скрипт для настройки параметров TCP/IP PetrovAlex Microsoft Windows NT/2000/2003 2 17-05-2007 15:46
Изменение параметров протокола TCP/IP с помощью групповой политики babki Microsoft Windows NT/2000/2003 1 10-01-2006 16:15




 
Переход