Windows 7でphysicalインターフェイスのMTUをプログラムで設定しようとしています。
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
または私がする必要がある何かがない限り。
ライアンの提案に従って、私はすでにIPv4 MTU(および適切な手段としてIPv6 MTU)を変更していました:
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.
だから、あなたが言ったように、それはインターフェースでは機能しますが、ハードウェアNICでは機能しないかもしれません。だから私は本当にあなたの質問に答えていません。
また、Set-NetAdapterAdvancedProperty
もコメントに含めます。ただし、そこにはMTU設定もありません。また、Windows GUIのデバイスプロパティでMTUを設定することもできません。違いはハードウェア固有だと思います。