'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' PURPOSE: This script takes a command line setting for speed/duplex and ' applies it to all adapters on a system, by default. If the command line supplied ' setting is the same as the current setting, an apply will not be executed. ' INPUTS: The parameters to be supplied are the range of settings for AutoSense. ' ' Copyright 2002 Intel Corporation, written by Carolyn Wyborny '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Option Explicit Dim strComputer, wbemServices, colIASettings, objIASetting, IANet_NetServiceClassDescription Dim colIANetServices, objIANetService, colIAConfigs, objIAConfig, SessionObject Dim strNSPath, strSH, objSH, SValueSet, strTest, colAdapters, objAdapter, NetServiceSet Dim objInParams, objInParamsProps, strStatus, argTest, bDoApply, NetServiceObject Dim strNetSerObjPath, ServiceObject, cstring, strAdapterPath, strQuery, bErr Dim colIAConfig, strConfigPath, posVals, strFSDSet, objIAProp, result, FinalTargetobj Const FOR_READING = 1 strComputer = "." If WScript.Arguments.Count = 0 Then PrintUsage() bErr = TRUE Else argTest = InStr("string012345", WScript.Arguments(0)) If argTest <> 0 Then strFSDSet = WSCript.ARguments(0) Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}\\" & strComputer & "\root\IntelNCS") Set colIANetServices = wbemServices.InstancesOf("IANet_NetService") Set colAdapters = wbemServices.InstancesOf("IANet_EthernetAdapter") Set SValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") Set IANet_NetServiceClassDescription = wbemServices.Get("IANet_NetService") Set SessionObject = IANet_NetServiceClassDescription.Methods_.Item("Apply").InParameters.SpawnInstance_() Set NetServiceSet = wbemServices.InstancesOf("IANet_NetService") For Each NetServiceObject In NetServiceSet ' SWbemObjectSet strNetSerObjPath = NetServiceObject.Path_.Path ' Save the path for later use Set ServiceObject = NetServiceObject.ExecMethod_("GetSessionHandle") cstring = ServiceObject.SessionHandle SessionObject.SessionHandle = cstring Next For Each objIANetService In colIANetServices strNSPath = objIANetService.Path_.Path Set objInParams = objIANetService.Methods_("Apply").inParameters.SpawnInstance_() strSH = SessionObject.SessionHandle SValueSet.Add "SessionHandle", strSH set objInParamsProps = objInParams.Properties_ objInParams.Properties_.Add("SessionHandle",8).Value=strSH set objInParamsProps = objInParams.Properties_ Next For Each objAdapter In colAdapters If StrComp(Mid(objAdapter.Caption, 1, 4), "Team", vbTextCompare) <> 0 Then strAdapterPath = objAdapter.Path_.Path strQuery = "ASSOCIATORS OF {" & strAdapterPath & "} WHERE ResultClass=IANet_Configuration" Set colIAConfig = wbemServices.ExecQuery(strQuery,,,SValueSet) WScript.Echo "Checking settings on " & objAdapter.Caption For Each objIAConfig in colIAConfig strConfigPath = objIAConfig.Path_.Path strQuery = "ASSOCIATORS OF {" & strConfigPath & "} WHERE AssocClass=IANet_SettingContext" Set colIASettings = wbemServices.ExecQuery(strQuery,,,SValueSet) For Each objIASetting In colIASettings If objIASetting.Caption = "SpeedDuplex" Then posVals = "temp " & Join(objIASetting.PossibleValues) strTest = InStr(posVals, WScript.Arguments(0)) If strTest > 0 Then If objIASetting.CurrentValue <> strFSDSet Then objIASetting.CurrentValue = strFSDSet WScript.Echo "Setting SpeedDuplex to " & WScript.Arguments(0)& " ..." Set result = objIASetting.Put_(131072, SValueSet) WSCript.Echo "New value is " & objIASetting.CurrentValue bDoApply = TRUE Else WScript.Echo "Current value is already " & WScript.Arguments(0) End If End If End If Next Next End If Next Else WScript.Echo "This script must be run with a valid Speed/Duplex setting" PrintUsage() bErr = TRUE End If If bDoApply = TRUE Then ExecApply wbemServices, strNetSerObjPath, SessionObject End If If bErr <> TRUE Then ReleaseHandle wbemServices, strNetSerObjPath, SessionObject End If End If '===================================================================================== ' ' Sub: Sub ExecApply(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) ' '===================================================================================== Sub ExecApply(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) WScript.Echo "Executing apply..." Set NetServiceObject = wbemServices.Get(strNetSerObjPath) Set FinalTargetobj = NetServiceObject.ExecMethod_("Apply", SessionObject) End Sub '===================================================================================== ' ' Sub: Sub ReleaseHandle(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) ' '===================================================================================== Sub ReleaseHandle(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) WScript.Echo "Releasing Session Handle" Set NetServiceObject = wbemServices.Get(strNetSerObjPath) Set FinalTargetobj = NetServiceObject.ExecMethod_("ReleaseSessionHandle", SessionObject) End Sub '======================================================================================= ' ' Sub: PrintUsage() ' '======================================================================================= Sub PrintUsage() WScript.Echo "" WScript.Echo "Intel(R) FDSSet.vbs version 1.0 " WScript.Echo "Copyright (C) Intel, Inc. 2003. All rights reserved." WScript.Echo "" WScript.Echo " Usage: FSDSet.vbs keyword " WScript.Echo " Keyword is required and is valid Speed/Duplex setting." WScript.Echo " Valid Speed/Duplex settings are:" WScript.Echo " 0 = AutoDetect, 1 = 10-Half Duplex, 2= 10-Full Duplex" WScript.Echo " 3 = 100-Half Duplex, 4 = 100-Full Duplex, 5 = 1000 Full Duplex." End Sub '====================================================================================================== ' ' Sub ErrorCheck() ' Displays Error and Extended Error Info to standard output ' '====================================================================================================== Sub ErrorCheck() Dim errExObject, strErrText WScript.Echo "Error Number=" & Err.Number WScript.Echo "Error Description=" & Err.Description Set errExObject = CreateObject("WbemScripting.SWbemLastError") If IsNull(errExObject) = FALSE Then strErrText = errExObject.GetObjectText_ WScript.Echo "MOF=" & strErrText End If End Sub