VBS: NIC Show Icon/Power Mgt Script

08 May 2006
Here's script that I wrote (and probably borrowed some of it) to turn all nics' icons on, and disable power management for them. It only looks at nics with IP enabled.
You can also download it here.
(Just make sure you rename it to nicmod.vbs, or something similar)

'************************************************************************
'* VBS Script to:
'* Enable/Disable showing the icon in your system tray for connected NICs
'* Enable/Disable Power Management for Connected NICs
'*
'* 8 MAY 06 - Jase McCarty
'************************************************************************


'Let's setup our variables
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE info for registry writes
Dim objReg 'Registry Object
Dim objWMIService 'WMI Service Object
Dim arrayNetCards 'Array of all connected NICs
Dim objNetCard 'A specific NIC
Dim strNICguid '
Dim strShowNicKeyName 'Key Specific to the Network Adapters in CurrentControlSet
Dim strShowNicKeyName001 'Key Specific to the Network Adapters in ControlSet001
Dim strPnPCapabilitesKeyName 'Key Specific to the Network Adapters in CurrentControlSet
Dim strPnPCapabilitesKeyName001 'Key Specific to the Network Adapters in ControlSet001
Dim strComputer 'Name of computer to modify


You will have to reboot the system for the settings to take effect, or you could put it in a group policy to automatically run when a system performs a shutdown.
strComputer = "." 'Period = local computer

strShowNicKeyName = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\"
strShowNicKeyName001 = "SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\"
strPnPCapabilitiesKeyName = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"
strPnPCapabilitiesKeyName001 = "SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"


ShowNicdwValue = 1
'1 for ON, 0 for OFF



PnPdwValue = 56
'56 to disable "Allow the computer to turn off this device to save power."


'48 to enable "Allow the computer to turn off this device to save power."



'32 to enable "Allow the computer to turn off this device to save power."
' and enable "Allow this device to bring the computer out of standby."



'288 to enable "Allow the computer to turn off this device to save power."
' and enable "Allow this device to bring the computer out of standby."
' and enable "Only allow management stations to bring the computer out of standby."



On Error Resume Next
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")


'Look for the NICs that have IP enabled
Set arrayNetCards = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")


'Make changes on the NICs that have IP enabled
For Each objNetCard in arrayNetCards

strNICguid = objNetCard.SettingID 'Get the GUID of the NIC
strDeviceID = Mid(objNetCard.Caption,6,4) 'Get the DeviceID of the NIC



'Change the "Show icon in notification area when connected value"
objReg.SetDWORDValue HKLM, strShowNicKeyName & strNICguid & "\Connection", "ShowIcon", ShowNicdwValue
objReg.SetDWORDValue HKLM, strShowNicKeyName001 & strNICguid & "\Connection", "ShowIcon", ShowNicdwValue



'Change the Power Management Values
objReg.SetDWORDValue HKLM, strPnPCapabilitiesKeyName & strDeviceID & "\","PnPCapabilities",PnPdwValue
objReg.SetDWORDValue HKLM, strPnPCapabilitiesKeyName001 & strDeviceID & "\","PnPCapabilities",PnPdwValue
Next



Set objReg = Nothing

Set objWMIService = Nothing
'*** END OF SCRIPT ***



You could also modify this script to take a list of computers, and make the changes on all of them.

Enjoy.

Labels:

VBS: Update Services Password on Local/Remote Box

29 March 2006
This script, will allow you to update passwords for services that "Log on As" set to use a domain account.
You can download it here.
'***********************************************************
'Written by Jase McCarty
'Date: 03/29/2006
'
'UPD8SVCS.vbs
'
'Description: Change the password on a local
'or remote system for a Service that has
'"Logon As" set for a Domain Account
'Useful for Servers when a service account
'has a password change
'***********************************************************
Option Explicit
Dim shellobj,env
Dim strUserDomain,strUserName,strPassword,strComputer
Dim CSComputerName,CSAccount,CSPassword,objWMIService
Dim objService
'Check to make sure that we receive enough arguements (2 or more)
If Wscript.Arguments.Count < 2 Then

Wscript.Echo "Usage: UPD8SVCS.vbs USERNAME PASSWORD COMPUTERNAME"
Wscript.Quit

Else

'Create a Shell Object & be able to get environment variables
Set shellobj = CreateObject("Wscript.Shell")
Set env = shellobj.Environment("process")
'Setup default domain for credentials
'(could be modified to be an attribute)
strUserDomain = env("USERDOMAIN")
strUserName = Wscript.Arguments(0)
strPassword = Wscript.Arguments(1)

'Check to make sure we have enough arguements (2 or more)
If Wscript.Arguments.Count > 2 Then
'If we 3, then the Computername will be the 3rd arguement
strComputer = Wscript.Arguments(2)
Else
'If we only receive the first 2, then the Computername
'will be the local computer
strcomputer = env("COMPUTERNAME")
End If

'Call the ChangeServices subroutine
Call ChangeServices(strComputer,strUserDomain & "\" & strUserName,strPassword)

WScript.Quit

End If

'The ChangeServices SubRoutine
'This requires a computername, account,and password to be passed to it
Sub ChangeServices(CSComputerName,CSAccount,CSPassword)
'Setup a WMIService object, and setup a query to put all services in an array
Set objWMIService = GetObject("winmgmts:\\" & CSComputerName & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service",,48)

'Loop through the array
For Each objService in colItems
'If the "Logon As" of the current service matches the user specified,
'change the password to the one specified
If Lcase(objService.StartName) = LCase(CSAccount) Then
'Make the credentials change
errReturn = objService.Change(,,,,,,CSAccount,CSPassword)

'Write to the screen and the computer's event log, the success or failure
If err.number <> 0 then
shellobj.LogEvent 1,"Failure Changing Username and Password for " _
& objService.DisplayName & " run by user " & CSAccount & "."
Wscript.Echo "Failure Changing Username and Password for " _
& objService.DisplayName & " run by user " & CSAccount & "."
Else
shellobj.LogEvent 0,"Successfully Changed Username and Password for " _
& objService.DisplayName & " run by user " & CSAccount & "."
Wscript.Echo "Successfully Changed Username and Password for " _
& objService.DisplayName & " run by user " & CSAccount & "."
End If

End If

Next

End Sub

Labels: