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.
Также в поле маска ошибка 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.