Discussions

Dell Express Service Code

+
0 Votes
Locked

Dell Express Service Code

dan.cox
Does anyone know how to read the Dell Express service code using VBScript?
We are currently reading the service tag and model from the bios but would like to get the express service code.
We don't know the syntax to read that object.
If anyone knows please let me know.

This is what I have so far.
***********************************
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
For Each objItem in colItems
Wscript.Echo "BIOSVersion: " & objItem.BIOSVersion
Wscript.Echo "BuildNumber: " & objItem.BuildNumber
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "SerialNumber: " & objItem.SerialNumber
Wscript.Echo "Version: " & objItem.Version
Next
******************************************

Thanks.
  • +
    0 Votes
    dan.cox

    Thanks, I figured it out.
    If you have dell machines and need to get the Dell Express Service Code using a script you can use this.

    =============================================
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
    For Each objItem in colItems
    strSerial = objItem.SerialNumber
    Next

    Function Base2Base(InputNumber,InputBase,OutputBase)
    Dim J, K, DecimalValue, X, MaxBase, InputNumberLength
    Dim NumericBaseData, OutputValue
    NumericBaseData = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    MaxBase = Len(NumericBaseData)
    if (InputBase > MaxBase) OR (OutputBase > MaxBase) then
    Base2Base = "N/A"
    Exit Function
    end if
    'Convert InputNumber to Base 10
    InputNumberLength = Len(InputNumber)
    DecimalValue = 0
    for J = 1 to InputNumberLength
    for K = 1 to InputBase
    if mid(InputNumber, J, 1) = mid(NumericBaseData, K, 1) then
    DecimalValue = DecimalValue+int((K-1)*(InputBase^(InputNumberLength-J))+.5)
    end if
    next
    next
    'Convert the Base 10 value (DecimalValue) to the desired output base
    OutputValue = ""
    while DecimalValue > 0
    X = int(((DecimalValue/OutputBase)-int(DecimalValue/OutputBase))*OutputBase+1.5)
    OutputValue = mid(NumericBaseData, X, 1)+OutputValue
    DecimalValue = int(DecimalValue/OutputBase)
    Wend
    Base2Base = OutputValue
    Exit Function
    End Function

    Wscript.Echo Base2Base(strSerial, 36, 10)
    ================================================

    +
    0 Votes
    dan.cox

    Thanks, I figured it out.
    If you have dell machines and need to get the Dell Express Service Code using a script you can use this.

    =============================================
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
    For Each objItem in colItems
    strSerial = objItem.SerialNumber
    Next

    Function Base2Base(InputNumber,InputBase,OutputBase)
    Dim J, K, DecimalValue, X, MaxBase, InputNumberLength
    Dim NumericBaseData, OutputValue
    NumericBaseData = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    MaxBase = Len(NumericBaseData)
    if (InputBase > MaxBase) OR (OutputBase > MaxBase) then
    Base2Base = "N/A"
    Exit Function
    end if
    'Convert InputNumber to Base 10
    InputNumberLength = Len(InputNumber)
    DecimalValue = 0
    for J = 1 to InputNumberLength
    for K = 1 to InputBase
    if mid(InputNumber, J, 1) = mid(NumericBaseData, K, 1) then
    DecimalValue = DecimalValue+int((K-1)*(InputBase^(InputNumberLength-J))+.5)
    end if
    next
    next
    'Convert the Base 10 value (DecimalValue) to the desired output base
    OutputValue = ""
    while DecimalValue > 0
    X = int(((DecimalValue/OutputBase)-int(DecimalValue/OutputBase))*OutputBase+1.5)
    OutputValue = mid(NumericBaseData, X, 1)+OutputValue
    DecimalValue = int(DecimalValue/OutputBase)
    Wend
    Base2Base = OutputValue
    Exit Function
    End Function

    Wscript.Echo Base2Base(strSerial, 36, 10)
    ================================================

    +
    0 Votes
    joshland

    I am impressed by what you accomplished, but this is also a significantly disturbing piece of work.

    Please see this page for the python equiv., including grabbing the info from the system:

    http://pacopablo.com/wiki/pacopablo/blog/2007/10/02/23.30

    He used your post when confirming the base-36 nature of the System Tag. Look at the pythonic means of conversion:

    str(int(service_tag,36))

    Things like this are why python rules.

    +
    0 Votes
    paulcat

    simply go to a DOS window and type WMIC /node<IP ADDRESS> bios get serialnumber

    This will query the bios of the remote computer and produce the asset tag.

    +
    0 Votes
    .Martin.

    very nice job...

    +
    0 Votes
    CharlieSpencer

    paulcat offered an interactive solution, but the original request was for a script.

    +
    0 Votes
    esampa

    Hi... You can do the following

    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct",,48)
    For Each objItem in colItems
    strComputerSystem_IdentifyingNumber = objItem.IdentifyingNumber
    Next
    End If

    So now you got the TAG... let's calc the express service

    Dim strTAG, ExpressCode, Index, count1, count2, count3, count4
    Dim strRevTAG, fator, strTArray(7), tmp

    Index = Array(0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")

    strTAG = InputBox("Please, type your TAG")
    strTAG = UCase(strTAG)
    strRevTAG = StrReverse(strTAG)

    count1 = Len(strTAG) ' Length of TAG
    count3 = (count1-1) ' Array Size

    ReDim fator(Len(strTAG))
    ReDim ExpressCode(Len(strTAG))
    For count2=0 To count3
    strTArray(count2) = CStr(Left(strRevTAG, 1))
    strRevTAG = Right(strRevTAG, Len(strRevTAG)-1)
    Next

    For count2=0 To count3
    If (count2=0) Then
    fator(count2) = 1
    Else
    fator(count2) = (36 ^ count2)
    End If
    For count4=0 To UBound(Index)
    If strTArray(count2) = CStr(Index(count4)) Then
    tmp1 = fator(count2)
    ExpressCode(count2) = tmp1 * count4
    End If
    Next
    Next
    tmp = 0
    For count2=0 To UBound(ExpressCode)
    tmp = tmp + ExpressCode(count2)
    Next
    Wscript.Echo "Your Express Service Code: " & tmp

  • +
    0 Votes
    dan.cox

    Thanks, I figured it out.
    If you have dell machines and need to get the Dell Express Service Code using a script you can use this.

    =============================================
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
    For Each objItem in colItems
    strSerial = objItem.SerialNumber
    Next

    Function Base2Base(InputNumber,InputBase,OutputBase)
    Dim J, K, DecimalValue, X, MaxBase, InputNumberLength
    Dim NumericBaseData, OutputValue
    NumericBaseData = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    MaxBase = Len(NumericBaseData)
    if (InputBase > MaxBase) OR (OutputBase > MaxBase) then
    Base2Base = "N/A"
    Exit Function
    end if
    'Convert InputNumber to Base 10
    InputNumberLength = Len(InputNumber)
    DecimalValue = 0
    for J = 1 to InputNumberLength
    for K = 1 to InputBase
    if mid(InputNumber, J, 1) = mid(NumericBaseData, K, 1) then
    DecimalValue = DecimalValue+int((K-1)*(InputBase^(InputNumberLength-J))+.5)
    end if
    next
    next
    'Convert the Base 10 value (DecimalValue) to the desired output base
    OutputValue = ""
    while DecimalValue > 0
    X = int(((DecimalValue/OutputBase)-int(DecimalValue/OutputBase))*OutputBase+1.5)
    OutputValue = mid(NumericBaseData, X, 1)+OutputValue
    DecimalValue = int(DecimalValue/OutputBase)
    Wend
    Base2Base = OutputValue
    Exit Function
    End Function

    Wscript.Echo Base2Base(strSerial, 36, 10)
    ================================================

    +
    0 Votes
    dan.cox

    Thanks, I figured it out.
    If you have dell machines and need to get the Dell Express Service Code using a script you can use this.

    =============================================
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
    For Each objItem in colItems
    strSerial = objItem.SerialNumber
    Next

    Function Base2Base(InputNumber,InputBase,OutputBase)
    Dim J, K, DecimalValue, X, MaxBase, InputNumberLength
    Dim NumericBaseData, OutputValue
    NumericBaseData = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    MaxBase = Len(NumericBaseData)
    if (InputBase > MaxBase) OR (OutputBase > MaxBase) then
    Base2Base = "N/A"
    Exit Function
    end if
    'Convert InputNumber to Base 10
    InputNumberLength = Len(InputNumber)
    DecimalValue = 0
    for J = 1 to InputNumberLength
    for K = 1 to InputBase
    if mid(InputNumber, J, 1) = mid(NumericBaseData, K, 1) then
    DecimalValue = DecimalValue+int((K-1)*(InputBase^(InputNumberLength-J))+.5)
    end if
    next
    next
    'Convert the Base 10 value (DecimalValue) to the desired output base
    OutputValue = ""
    while DecimalValue > 0
    X = int(((DecimalValue/OutputBase)-int(DecimalValue/OutputBase))*OutputBase+1.5)
    OutputValue = mid(NumericBaseData, X, 1)+OutputValue
    DecimalValue = int(DecimalValue/OutputBase)
    Wend
    Base2Base = OutputValue
    Exit Function
    End Function

    Wscript.Echo Base2Base(strSerial, 36, 10)
    ================================================

    +
    0 Votes
    joshland

    I am impressed by what you accomplished, but this is also a significantly disturbing piece of work.

    Please see this page for the python equiv., including grabbing the info from the system:

    http://pacopablo.com/wiki/pacopablo/blog/2007/10/02/23.30

    He used your post when confirming the base-36 nature of the System Tag. Look at the pythonic means of conversion:

    str(int(service_tag,36))

    Things like this are why python rules.

    +
    0 Votes
    paulcat

    simply go to a DOS window and type WMIC /node<IP ADDRESS> bios get serialnumber

    This will query the bios of the remote computer and produce the asset tag.

    +
    0 Votes
    .Martin.

    very nice job...

    +
    0 Votes
    CharlieSpencer

    paulcat offered an interactive solution, but the original request was for a script.

    +
    0 Votes
    esampa

    Hi... You can do the following

    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct",,48)
    For Each objItem in colItems
    strComputerSystem_IdentifyingNumber = objItem.IdentifyingNumber
    Next
    End If

    So now you got the TAG... let's calc the express service

    Dim strTAG, ExpressCode, Index, count1, count2, count3, count4
    Dim strRevTAG, fator, strTArray(7), tmp

    Index = Array(0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")

    strTAG = InputBox("Please, type your TAG")
    strTAG = UCase(strTAG)
    strRevTAG = StrReverse(strTAG)

    count1 = Len(strTAG) ' Length of TAG
    count3 = (count1-1) ' Array Size

    ReDim fator(Len(strTAG))
    ReDim ExpressCode(Len(strTAG))
    For count2=0 To count3
    strTArray(count2) = CStr(Left(strRevTAG, 1))
    strRevTAG = Right(strRevTAG, Len(strRevTAG)-1)
    Next

    For count2=0 To count3
    If (count2=0) Then
    fator(count2) = 1
    Else
    fator(count2) = (36 ^ count2)
    End If
    For count4=0 To UBound(Index)
    If strTArray(count2) = CStr(Index(count4)) Then
    tmp1 = fator(count2)
    ExpressCode(count2) = tmp1 * count4
    End If
    Next
    Next
    tmp = 0
    For count2=0 To UBound(ExpressCode)
    tmp = tmp + ExpressCode(count2)
    Next
    Wscript.Echo "Your Express Service Code: " & tmp