Option Explicit
' **********************************************************************************
' *
' * Title: Exculde from SCCM discovery
' *
' * File Name: excludefromsccm.vbs
' * Programmer(s): Stephen Wireman
' *
' * First Written: 02/13/2017
' * Last Modified:
' *
' * Version: 1.0.0
' *
' * Purpose: So a server/computer can be excluded
' * from all methods of SCCM discovery.
' *
' *
' * Information: Modifies the registry key located at
' * HKEY_LOCAL_MACHINE
' * Software\Microsoft\SMS\Components\SMS_DISCOVERY_DATA_MANAGER\ExcludeServers
' * Will maintain the values already in the key
' *
' * Note: With the use of "Option Explicit" all variables
' * must be explicitly defined and declared.
' *
' **********************************************************************************
' ***********************************************************
' * Define script constants *
' ***********************************************************
Const HKEY_LOCAL_MACHINE = &H80000002
' ***********************************************************
' * Define variable dimensions, assign variables to objects *
' ***********************************************************
Dim strComputer : strComputer = "."
Dim oReg : Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
Dim strKeyPath : strKeyPath = "Software\Microsoft\SMS\Components\SMS_DISCOVERY_DATA_MANAGER"
Dim strValueName : strValueName = "ExcludeServers"
' ***********************************************************
' * Execution phase *
' ***********************************************************
Call Main()
Call Finish()
' ***********************************************************
' * Functions and Sub Routines *
' ***********************************************************
Sub Main()
Dim strInput : strInput = vbNullString
Dim strTemp : strTemp = vbNullString
Dim arrValues : arrValues = vbNullString
Dim iValues : iValues = vbNullString
Call oReg.GetMultiStringValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,arrValues)
For Each strValue In arrValues
strTemp = strTemp & ","
Next
strInput = inputbox("Enter hostname to exclude from discovery","","SCCM Exclusion")
strTemp = strTemp & "," & strInput
iValues = strToArray(strTemp)
Call oReg.SetMultiStringValue(HKEY_LOCAL_MACHINE,strKeyPath,MultValueName,iValues)
End Sub
Sub Finish()
Set oReg = Nothing
If err then
Call wscript.echo("Error occured during processing:" & vbcrlf & vbcrlf & _
err.number & "," & err.description & "," & err.source)
Call wscript.quit(err.number)
Else
Call wscript.quit(0)
End If
End Sub
Function strToArray(s)
Dim a : a = vbNullString
Dim token : token = vbNullString
' discard blank entries
For Each token in split(s, ",")
token = trim(token)
If token <> "" Then
If isEmpty(a) Then
a = token
Else
a = a & "," & token
End If
End If
Next
' return array
strToArray = split(a, ",")
End Function