Quantcast
Channel: VBForums - Visual Basic 6 and Earlier
Viewing all articles
Browse latest Browse all 21333

Object not in collection

$
0
0
Hello,

I am having a similar error and would like to ask why the script abandons and returns "Object not in collection"
It's also writing out a text file.

Code:

str_boxname = WScript.Arguments( 0 )

const HKEY_LOCAL_MACHINE = &H80000002
DIM var_IPS
DIM var_Domain
DIM var_SERVERNAME
DIM var_VERSION
DIM var_OS
DIM var_OSVersion
DIM var_OSSP
DIM var_FDQN
DIM var_InstanceName
DIM var_port
DIM var_connection
DIM var_isCluster

var_SERVERNAME        = f_servername(str_boxname)
var_Domain                = f_DOMAIN(var_SERVERNAME)
var_OS                        = f_OS(var_SERVERNAME)
var_OSVersion  = f_OSVersion(var_SERVERNAME)
var_OSSP        = f_OSSP(var_SERVERNAME)
var_IPS                = f_IPS(var_SERVERNAME)
var_FDQN        = f_fdqn(var_SERVERNAME)
var_CLUSTER    = f_CLUSTER(var_SERVERNAME)
OutputFile="c:\temp\" & "EPinventory." & var_SERVERNAME
Set oFSO = CreateObject("Scripting.FilesyStemObject")
Set ofile = ofso.createTextFile(OutputFile, True)


Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & str_boxname & "\root\default:StdRegProv")
strKeyPath  = "SOFTWARE\Microsoft\Microsoft SQL Server"
strValueName = "InstalledInstances"
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight
If bHasAccessRight = True Then
        ofile.writeline CHR(34)&"DBTYPE"&CHR(34)&"|"&CHR(34)&"DBNAME"&CHR(34)&"|"&CHR(34)&"VERSION"&CHR(34)&"|"&CHR(34)&"INSTANCENAME"&CHR(34)&"|"&CHR(34)&"SERVERNAME"&CHR(34)&"|"&CHR(34)&"INSTANCEIPS"&CHR(34)&"|"&CHR(34)&"PORT"&CHR(34)&"|"&CHR(34)&"DOMAIN"&CHR(34)&"|"&CHR(34)&"OS"&CHR(34)&"|"&CHR(34)&"OSVERSION"&CHR(34)&"|"&CHR(34)&"OSPATCHLEVEL"&CHR(34)&"|"&CHR(34)&"FDQN"&CHR(34)&"|"&CHR(34)&"IPS"&CHR(34)&"|"&CHR(34)&"CLUSTERINFO" &CHR(34)

        oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,arrValues

        For Each RegInstanceName In arrValues
            var_InstanceName = f_Instance(var_SERVERNAME,RegInstanceName)
            var_Port = f_port(var_SERVERNAME, RegInstanceName )
            var_Connection = f_connection(var_SERVERNAME,RegInstanceName )

                Set oServer = CreateObject("SQLDMO.SQLServer")
                oServer.LoginSecure = True
                if var_iscluster = 1 then
                        oServer.Connect var_Connection & "," & var_port
                else
                        oServer.Connect var_Connection
                        var_CLUSTER = "no cluster info found"
                end if
                var_version = mid(oServer.VersionString,29,10)       
       
               
                For nDatabase = 1 to oServer.Databases.Count
                    ofile.writeline CHR(34) & "MSSQLSRV" & CHR(34) & "|" _
                    & CHR(34) & mid(Ucase(oServer.Databases(nDatabase).Name),1,32) & CHR(34) & "|" _       
                    & CHR(34) & var_version      & CHR(34) & "|" _       
                    & CHR(34) & Ucase(var_InstanceName) & CHR(34) & "|" _       
                    & CHR(34) & Ucase(var_SERVERNAME)  & CHR(34) & "|" _       
                    & CHR(34) & "*"  & CHR(34)    & "|" _                                               
                    & CHR(34) & var_Port & CHR(34) & "|" _
                    & CHR(34) & Ucase(var_Domain) & CHR(34) & "|" _                                       
                    & CHR(34) & Ucase(var_OS) & CHR(34) & "|" _                                       
                    & CHR(34) & var_OSVersion & CHR(34) & "|" _                                       
                    & CHR(34) & Ucase(var_OSSP) & CHR(34) & "|" _                                       
                    & CHR(34) & Ucase(var_FDQN) & CHR(34) & "|" _                                       
                    & CHR(34) & mid(var_IPS,1,128) & CHR(34) & "|" _       
                        & CHR(34) & var_CLUSTER & CHR(34)                                       
                   
                Next
            Set oServer = Nothing                         
        Next
Else
        ofile.writeline "NO_INSTANCE_FOUND"       
End If 

Set oFSO = Nothing

'---------------------------------------------------------------------------------------------------------------------
function f_Instance(strComputer, Installed_Instance)
        Const KEY_QUERY_VALUE = &H0001
        Const HKEY_LOCAL_MACHINE = &H80000002
        if Installed_Instance = "MSSQLSERVER" then
              var_InstanceName = strComputer
                var_isCluster = 0
    else
                Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
                strKeyPath = "SOFTWARE\MICROSOFT\Microsoft SQL Server\" & Installed_Instance & "\Cluster"
                oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE,bHasAccessRight
                If bHasAccessRight = True Then
                    oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE, strKeyPath, "ClusterName", strValue
                    var_InstanceName = strValue & "\" & Installed_Instance
                    var_isCluster = 1
                Else
                    var_InstanceName = strComputer & "\" & Installed_Instance
                    var_isCluster = 0
                End If 
  end if
  f_Instance = var_InstanceName
end function
'---------------------------------------------------------------------------------------------------------------------
'IPS
function f_IPS (strComputer)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True",,48)
For Each objItem in colItems
    If isNull(objItem.IPAddress) or trim(Join(objItem.IPAddress)) = "" or trim(Join(objItem.IPAddress)) = "0.0.0.0" Then
        var_IPS = var_IPS
    Else
        var_IPS = var_IPS & Join(objItem.IPAddress) & ","
    End If
       
Next
    f_IPS = mid(var_IPS,1,len(var_IPS)-1)
end function

'---------------------------------------------------------------------------------------------------------------------
'RETURNS FDQN
function f_FDQN (strComputer)
        Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
        Set colItems = objWMIService.ExecQuery( _
            "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True ",,48)
        For Each objItem in colItems
            if trim(objItem.DNSHostName) <> "" then
                    f_FDQN = objItem.DNSHostName
            end if
        Next
end function

'---------------------------------------------------------------------------------------------------------------------
'RETURNS THE DOMAIN
function f_DOMAIN (strComputer)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_ComputerSystem",,48)
For Each objItem in colItems
    f_DOMAIN = objItem.Domain
Next
end function

'---------------------------------------------------------------------------------------------------------------------
'Returns the Operating System
function f_OS(strcomputer)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_OperatingSystem",,48)
For Each objItem in colItems
    f_OS = objItem.Caption
Next
end function

'---------------------------------------------------------------------------------------------------------------------
'Returns the OS Version
function f_OSVersion(strcomputer)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_OperatingSystem",,48)
For Each objItem in colItems
    f_OSVersion = objItem.Version
Next
end function
'---------------------------------------------------------------------------------------------------------------------
function f_OSSP(strcomputer)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_OperatingSystem",,48)
For Each objItem in colItems
    f_OSSP = objItem.CSDVersion
Next
end function
'---------------------------------------------------------------------------------------------------------------------
'RETURNS THE SERVERNAME
function f_servername(strComputer)
        Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
        Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem",,48)
        For Each objItem in colItems
            f_servername = objItem.Name
        Next
end function
'---------------------------------------------------------------------------------------------------------------------
'RETURNS THE CLUSTER NAME
function f_CLUSTER(strComputer)
        f_CLUSTER = ""
end function
'---------------------------------------------------------------------------------------------------------------------
'CONNECTION STRING
function f_connection(strComputer, par_InstanceIp)
        Const KEY_QUERY_VALUE = &H0001
        Const HKEY_LOCAL_MACHINE = &H80000002
        var_connection = ""       

        if par_InstanceIp = "MSSQLSERVER" then
              var_connection = strComputer
    else
            Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
            strKeyPath = "SOFTWARE\MICROSOFT\Microsoft SQL Server\" & par_InstanceIp & "\Cluster"
            oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE,bHasAccessRight
            If bHasAccessRight = True Then
              f_instanceIp strComputer, par_instanceIp, var_connection
            Else
                  var_connection = strComputer & "\" & par_InstanceIp
            End If 
  end if

  f_connection = var_connection
end function
'---------------------------------------------------------------------------------------------------------------------

'RETURNS THE PORT NUMBER
function f_port(strComputer,sInstance)
Const HKEY_LOCAL_MACHINE        = &H80000002

        if sInstance = "MSSQLSERVER" THEN
            sComputer = strComputer
        sKey                = "SOFTWARE\MICROSOFT\MSSQLServer\MSSQLServer\Supersocketnetlib\Tcp"

        else
            sComputer = strComputer
        instance  = sInstance
        sKey      = "SOFTWARE\MICROSOFT\Microsoft SQL Server\"+instance+"\MSSQLServer\Supersocketnetlib\Tcp"
    end if

sMethod                = "GetStringValue"
hTree                = HKEY_LOCAL_MACHINE
sValue                = "TcpPort"
Set oRegistry        = GetObject("winmgmts:{impersonationLevel=impersonate}//"&sComputer&"/root/default:StdRegProv")
Set oMethod            = oRegistry.Methods_(sMethod)
Set oInParam        = oMethod.inParameters.SpawnInstance_()
oInParam.hDefKey = hTree
oInParam.sSubKeyName = sKey
oInParam.sValueName  = sValue
Set oOutParam        = oRegistry.ExecMethod_(sMethod, oInParam)
f_port = Cstr(oOutParam.Properties_("sValue"))
end function

'---------------------------------------------------------------------------------------------------------------------


function F_InstanceIP(strComputer, Installed_Instance, var_connection)
        Const KEY_QUERY_VALUE = &H0001
        Const HKEY_LOCAL_MACHINE = &H80000002
        var_connection = ""       

  Set oRegIp=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
  strKeyPathIp = "SOFTWARE\Microsoft\Microsoft SQL Server\" & Installed_Instance & "\Cluster"
  oRegIp.GetMultiStringValue HKEY_LOCAL_MACHINE, strKeyPathIp, "ClusterIpAddr", IParrValues

  For Each strValue In IParrValues
      var_connection = var_connection & strvalue
  Next
  set oRegIp = nothing
  f_instanceip = var_connection

end function


Viewing all articles
Browse latest Browse all 21333

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>