尝试使用WMI来显示系统上的网络适配器的MTU值

问题描述:

我有这个子例程只显示空白行。尝试使用WMI来显示系统上的网络适配器的MTU值

'************************************************************************* 
' Check MTU 
'************************************************************************* 
Sub CheckMTU() 
    WScript.Echo("Check if MTU Size is set to 1300") 
    WScript.Echo("------------------------------------") 
    Set colNetwork = objWMISrvc.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") 
    For Each objItem in colNetwork 
     WScript.Echo(objItem.MTU & vbCrLf) 
    Next 
End Sub 

我想测试一下,看看如果网络适配器有一个1300这将在多个机器上运行的MTU值和我有问题是在注册表中的网络适配器的名称总是不同的。这将是很好,如果我的实施工作...

任何想法?

编辑: 我改变了这个子程序,但它不工作。

'************************************************************************* 
' Check MTU 
'************************************************************************* 
Sub CheckMTU() 
    Dim intResult 
    WScript.Echo("Verify MTU Size is 1300. Changes MTU Size to 1300 ") 
    WScript.Echo("------------------------------------") 
    Set colNetwork = objWMISrvc.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE IPEnabled = True") 'WHERE IPEnabled = True 
    For Each objItem in colNetwork 
     WScript.Echo objItem 
     intResult = objItem.SetMTU(1300) 
     WScript.Echo intResult 
    Next 
    If intResult = 0 or intResult = 1 Then 
     WScript.Echo("Network Adapter MTU Value is set to 1300. Test PASSED" & vbCrLf) 
    Else 
     WScript.Echo("Network Adapter MTU Value can't be set to 1300. Test FAILED" & vbCrLf) 
    End If 
End Sub 

它甚至没有打印出intResult或objItem。它几乎感觉好像它没有从colNetwork获取任何东西。

有什么建议吗?我应该做一个新的职位?

不是100%肯定,为什么没有MTU值..但你总是可以将MTU值设置调用SetMTU方法:http://msdn.microsoft.com/en-us/library/windows/desktop/aa393463(v=vs.85).aspx

+0

这就是我可能做的...而不是检查服务器网络适配器以查看它是否已设置...我可能只是将其设置在脚本中。 – envinyater

+0

我编辑了我的原始帖子,以反映这一新的变化。虽然有些事情很奇怪...... – envinyater

变化:

WScript.Echo(objItem.MTU & vbCrLf) 

要:

WScript.Echo objItem.MTU 
+0

我只是得到NULL – envinyater

+0

我也得空,但我值为NULL;你确定你的网络适配器MTU值不是NULL吗? – nimizen

我想是因为这个值用来覆盖默认值。

"Overrides the default Maximum Transmission Unit (MTU) for a network interface." 

如果它为空,则使用默认值,如果不是,则覆盖默认值。 您可以查看驱动器具有以下netsh命令报道了默认的MTU值:

netsh interface ip show subinterfaces