Not all objects are found in a "SELECT" command

29 Views Asked by At

I have this function that do a "SELECT" query to find computers in SCCM. I do get get some objects, but not all computers are found, even that I can see them in the SCCM console. I don't get any errors only that some of the objects are not found.

What could be the issue?

def main(file_path, search_value):
    # Load the Excel workbook
    wb = load_workbook(file_path)
    
    # Select the active worksheet
    ws = wb.active

    # Define wmi_service with a default value of None
    wmi_service = None

    try:
        # Connect to WbemScripting.SWbemLocator
        locator = win32com.client.Dispatch("WbemScripting.SWbemLocator")

        # Connect to WMI namespace on the remote computer
        # Use .ConnectServer for a local connection
        wmi_service = locator.ConnectServer(sServerName, r'root\SMS\site_' + sSiteCode)

    except Exception as e:
        print("An error occurred:", e)
    finally:    
        # Create an empty list to store the data from column A
        Excel_list = []

        # Iterate through the rows in column A starting from row 2
        for row in range(2, ws.max_row + 1):
            cell_value = ws['A' + str(row)].value
            if cell_value is not None:
                Excel_list.append(cell_value)

        # Find elements in AD not present in Excel
        not_in_Excellist = list(set(search_value) - set(Excel_list))
        if wmi_service is not None:
            for computername in not_in_Excellist:
            # Query some information from WMI
                query = f"SELECT * FROM SMS_G_System_COMPUTER_SYSTEM Where Name='{computername}'"
                results = wmi_service.ExecQuery(query)
                if results:
                    for item in results:
                        if item.ResourceId != 0:
                            query = f"SELECT * FROM SMS_G_System_PC_BIOS Where RESOURCEID='{item.ResourceId}'"
                            results = wmi_service.ExecQuery(query)
                            for item in results:
                                print("Name:", computername)
                                print("SerialNumber:", item.SerialNumber)
                else:
                    print(computername + " not found in SCCM.")

        else:
            print("Failed to connect to SCCM namespace.")

0

There are 0 best solutions below