Сценарий Powershell для альтернативного включения отключения сетевой карты - PullRequest
0 голосов
/ 06 марта 2020

Я провел поиск и собрал следующий скрипт, но он ничего не делает. Он отобразит DISABLING INTE RNET, но затем просто закроется и фактически не отключит карту. Буду признателен за любую помощь.

# This Powershell Script will alternate enabling and disabling the Network Card
# Change NAME OF NETWORK CONNECTION with the actual name of your network connection from control panel

$up = "Up"
$disconnected="Disconnected"
$lan = "NAME OF NETWORK CONNECTION"

$landown = Get-NetAdapter | select Name,Status | where { $_.Status -match $disconnected -and $_.Name -match $lan }
$lanUp = Get-NetAdapter | select Name,Status | where { $_.Status -match $up -and $_.Name -match $lan }

if ($lanUp)
{
    Write-Host("Disabling Internet")
    Disable-NetAdapter -Name $lan -Confirm:$false
}
elseif ($landown) 
{
    Write-Host("Enabling Internet")
    Enable-NetAdapter -Name $lan -Confirm:$false
}
Exit

=========================== Исходное сообщение

Я не знаю много о PowerShell. Я использовал devcon и скрипт, который создал ярлык, который будет чередовать включение и отключение сетевой карты на нескольких рабочих столах для простого способа отключения от интернета / сети, когда в этом нет необходимости. После обновления с win 7 до 10 один компьютер иногда не может повторно включить свою сетевую карту без перезагрузки (даже при переходе в диспетчер устройств. После отключения он время от времени перестает работать). Кто-то на Reddit предположил, что это может быть проблема с devcon и как он выгружает драйвер. Было предложено использовать скрипт powershell.

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

Любая помощь будет принята.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 марта 2020

Финальный сценарий. Работает, когда я создаю ярлык к нему и устанавливаю ярлык для запуска от имени администратора. Спасибо

# This Powershell Script will alternate enabling and disabling the Network Card
# Change NAME OF NETWORK CONNECTION with the actual name of your network connection from control panel
# Example "Local Area Network"

$up = "Up"
$disabled = "Disabled"
$notpresent = "Not Present"
$lan = "NAME OF NETWORK CONNECTION"

$landown = Get-NetAdapter | select Name,Status | where { $_.Status -match $disabled -and $_.Name -match $lan }
$landown2 = Get-NetAdapter | select Name,Status | where { $_.Status -match $notpresent -and $_.Name -match $lan }
$lanUp = Get-NetAdapter | select Name,Status | where { $_.Status -match $up -and $_.Name -match $lan }

if ($lanUp)
{
    Write-Host("Disabling Internet")
    Disable-NetAdapter -Name $lan -Confirm:$false
}
elseif ($landown) 
{
    Write-Host("Enabling Internet")
    Enable-NetAdapter -Name $lan -Confirm:$false
}
elseif ($landown2) 
{
    Write-Host("Enabling Internet")
    Enable-NetAdapter -Name $lan -Confirm:$false
}
stop-process -Id $PID
Exit
0 голосов
/ 07 марта 2020

Ваш код работает нормально для меня, за исключением случаев повторного включения сетевого адаптера. Вы используете неправильную строку для .Status, когда интерфейс не работает. Если вы посмотрите на Отключенный сетевой адаптер (подсказка: Disable-NetAdapter), то увидите, что свойство Status имеет значение «Отключено», а не «отключено». Вот почему он работает, когда ваш интерфейс «Вверх», но не когда он «Отключен». Замените ваш код следующим:

$up = "Up"
$disabled = "Disabled"
$lan = "NAME OF NETWORK CONNECTION"

$landown = Get-NetAdapter | select Name,Status | where { $_.Status -match $disabled -and $_.Name -match $lan }
$lanUp = Get-NetAdapter | select Name,Status | where { $_.Status -match $up -and $_.Name -match $lan }

if ($lanUp)
{
    Write-Host("Disabling Internet")
    Disable-NetAdapter -Name $lan -Confirm:$false
}
elseif ($landown) 
{
    Write-Host("Enabling Internet")
    Enable-NetAdapter -Name $lan -Confirm:$false
}
Exit

Сначала я исправлю это, а затем устраню другие проблемы (например, вашу теорию о драйвере), если он не начнет работать должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...