Thank you Viorel,
I have replaced the 'NumberOfCores' with 'NumberOfLogicalProcessors' in the GetObject statement, and in the objProc loop, but the script still ends at 4. Still couldn't pass above 4 in the colCPUSystems loop when I ran it. I have attached the change as follows.
Dim strComputer = "Server_A"
Dim arrProcessors : ReDim arrProcessors(2, 0)
Dim PLoad(16) As Integer
Dim objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Dim colCPUSystems = objWMIService.ExecQuery("Select AddressWidth,DataWidth,NumberOfLogicalProcessors,Name,MaxClockSpeed,LoadPercentage from Win32_Processor")
Dim proc = 0
For Each objProc In colCPUSystems
arrProcessors(0, proc) = objProc.NumberOfLogicalProcessors
arrProcessors(1, proc) = objProc.MaxClockSpeed
arrProcessors(2, proc) = objProc.LoadPercentage
proc = proc + 1
ReDim Preserve arrProcessors(2, proc)
Next