Я пытаюсь установить MTU для физический программный интерфейс в Windows 7:
PS> (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where { $_.Description -match '^Red Hat.*#2' })
DHCPEnabled : False
IPAddress : {10.10.8.3, fe80::447d:38dc:bb39:f311}
DefaultIPGateway :
DNSDomain :
ServiceName : netkvm
Description : Red Hat VirtIO Ethernet Adapter #2
Index : 12
PS> (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where { $_.Description -match '^Red Hat.*#2' }).SetMTU(9000)
Method invocation failed because [System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapterConfiguration] doesn't contain a method named 'SetMTU'.
At line:1 char:113
+ (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where { $_.Description -match '^Red Hat.*#2' }).SetMTU <<<< (9000)
+ CategoryInfo : InvalidOperation: (SetMTU:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Даже если этот метод существует это еще ошибки? Шутки в сторону?
Пожалуйста помоги.
PS> (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | \
Where { $_.Description -match '^Red Hat.*#2' }) | Get-Member
возвращает, среди прочего:
MTU Property System.UInt32 MTU {get;set;}
Но попытка получить или установить ничего не дает:
(Get-WmiObject -Class Win32_NetworkAdapterConfiguration | \
Where { $_.Description -match '^Red Hat.*#2' }).MTU
Если нет Invoke-Magic
или что-то мне нужно сделать.
В соответствии с предложением Райана я уже изменил MTU IPv4 (и MTU IPv6 для хорошей меры):
C:\>netsh interface ipv4 show subinterface "Local Area Connection 2"
MTU MediaSenseState Bytes In Bytes Out Interface
------ --------------- --------- --------- -------------
9000 1 3686 6624 Local Area Connection 2
Вроде бы хорошо, но это влияет только на субинтерфейс, а не аппаратный интерфейс:
Это даже после перезагрузки.
Хорошо, это не совсем ответ на ваш вопрос, но я думаю, что он все равно содержит неплохую информацию, поэтому я оставлю это. Надеюсь, у кого-то есть лучший.
Делать:
(Get-WmiObject -Class Win32_NetworkAdapterConfiguration |
Where { $_.Description -match '^Red Hat.*#2' }) |
Get-Member
И наблюдайте за выходом. Вы увидите, что этот экземпляр фактически не содержит метода с именем SetMTU, несмотря на то, что говорится в этой документации. Редактировать: На самом деле может твое. Но мой сетевой интерфейс не есть это. Похоже, это зависит от оборудования.
Я знаю, что собираюсь обмануть, но это работает:
PS C:\> $AdapterName = $(Get-NetAdapter | Where { $_.Name -Match 'Ethernet'}).Name
PS C:\> netsh interface ipv4 set subinterface "$AdapterName" mtu=1500 store=persistent
Ok.
Итак, как вы сказали, это работает для интерфейса, но, возможно, не для аппаратной сетевой карты. Так что я не ответил на ваш вопрос.
Вы также упомянули Set-NetAdapterAdvancedProperty
в ваших комментариях. Однако у меня там нет настройки MTU. Я также не могу установить MTU в свойствах устройства в графическом интерфейсе Windows. Я думаю, что различия зависят от оборудования.