Okay, I finally got off my duff and gave this the attention it deserves. I forgot to include a ping function. You have to have the computer's IP to match to the computer's IP in SMS. I really need to go through this and clean it up.

This script works here.



BREAK ON
DIM $Computer$MACAddress$OffSubnet$OffMask

$txtSMSSiteServer = "SITESERVER"
$txtSMSSiteCode = "SITECODE"
$Computer = "COMPUTERNAME"

$RC = fnPingQuick($Computer1100032)
$WMISMSServer = fnWMIConnect($txtSMSSiteServer,,,,,"/root/sms/site_" + $txtSMSSiteCode)
IF VarType($WMISMSServer) <9
    $WMISMSServerStatus = "NoAccess"
ELSE
    $WMISMSServerStatus = "Access"
    $ComputerResourceID = fnSMSGetResourceID($Computer$WMISMSServer)
    $oClient = $WMISMSServer.ExecQuery ("Select IPAddresses, IPSubnets, MacAddresses FROM SMS_R_System WHERE ResourceID=" + $ComputerResourceID)
    FOR EACH $Client IN $oClient
        $Index = 0
        FOR EACH $IP IN $Client.IPAddresses
            IF $IP = $IPAddress
                $MACAddress = Join(Split($Client.MacAddresses($Index), ":", -1), "")
                $OffSubnet = $Client.IPSubnets($Index)
                $oSubnetMask = $WMISMSServer.ExecQuery ("Select * FROM SMS_G_System_NETWORK_ADAPTER_CONFIGURATION WHERE ResourceID=" + $ComputerResourceID)
                FOR EACH $SubnetMask IN $oSubnetMask
                    IF $SubnetMask.IPAddress = $IPAddress
                        $OffMask = $SubnetMask.IPSubnet
                    ENDIF
                NEXT
            ENDIF
            $Index = $Index + 1
        NEXT
    NEXT
ENDIF

$WMISMSServerStatus
$Computer
$ComputerResourceID
$MACAddress
$OffSubnet
$OffMask

;================================================================
FUNCTION fnWMIConnect(OPTIONAL $sComputerOPTIONAL $sUSEROPTIONAL $spwdOPTIONAL $ImpLevelOPTIONAL $authLevelOPTIONAL $sNamespace)
;-- This will make a WMI connection to a namespace on a computer.
;ImpersonationLevels:
;--- Anonymous:        Hides the credentials of the caller. Calls to WMI may fail with this impersonation level.
;--- IdentIFy:        Allows objects to query the credentials of the caller. Calls to WMI may fail with this impersonation   level.
;--- Impersonate:    Default.  Allows objects to USE the credentials of the caller. This is the recommended impersonation level
;---                for WMI Scripting API calls.
;--- Delegate:        Allows objects to permit other objects to USE the credentials of the caller. This impersonation, which&am p;nb sp;will
;---                work with WMI Scripting API calls but may constitute an unnecessary security risk, is supported only  ; ;under Windows 2000.
    DIM $locator$context$namespace$moniker
    SELECT
        CASE $ImpLevel=1
            $ImpLevel = "Anonymous"
        CASE $ImpLevel=2
            $ImpLevel = "IdentIFy"
        CASE $ImpLevel=3
            $ImpLevel = "impersonate"
        CASE $ImpLevel=4
            $ImpLevel = "Delegate"
        CASE 1
            $ImpLevel = "impersonate"
    ENDSELECT
    $authLevel = "pktPrivacy"
    $moniker = "winmgmts:{impersonationLevel=" + $ImpLevel + ",authenticationLevel=" + $authLevel+"}!\\"
    $namespace = "\root\cimv2"
    IF $sNamespace
        $namespace = $sNamespace
    ENDIF
    IF NOT $sComputer OR $sComputer = "@Wksta" OR $sComputer = "."
; local host
        $sComputer = "@Wksta"
        $fnWMIConnect = GetObject($moniker+$sComputer+$namespace)
    ELSE
; remote host
        IF ($sUSER AND $spwd) OR $sUSER
            IF Substr($namespace11) = "\"
                $namespace = Substr($namespace2Len($namespace) - 1)
            ENDIF
            $locator = CreateObject("WbemScripting.SWbemLocator")
            $context = CreateObject("WbemScripting.SWbemNamedValueSet")
            $fnWMIConnect = $locator.ConnectServer($sComputer,$namespace,$sUSER,$spwd,"","",0,$context)
        ELSE
; current (local) credentials
            $fnWMIConnect = GetObject($moniker+$sComputer+$namespace)
        ENDIF
    ENDIF
    IF @Error
        $fnWMIConnect = @SError
    ENDIF
    EXIT @Error
ENDFUNCTION
;================================================================
FUNCTION fnSMSGetResourceID($ComputerName$WMISMSServerName)
;--- This function will return the Resource ID for a computer from the SMS Server.
    DIM $SMSGetResourceIDError$SMSGetResourceIDQuery
    $SMSGetResourceIDQuery = 'Select ResourceID from SMS_R_System where Name=' + '"' + $ComputerName + '"'
    $SMSGetResourceIDObjEnumerator = $WMISMSServerName.ExecQuery($SMSGetResourceIDQuery)
    $SMSGetResourceIDError = @Error
    IF $SMSGetResourceIDError <0
        $fnSMSGetResourceID = 0
    ELSE
        FOR EACH $SMSGetResourceIDObjInstance IN $SMSGetResourceIDObjEnumerator
           FOR EACH $SMSGetResourceIDOProp IN $SMSGetResourceIDObjInstance.Properties_
             $fnSMSGetResourceID = $SMSGetResourceIDOProp.Value
           NEXT
        NEXT
    ENDIF
    $SMSGetResourceIDObjEnumerator = ''
    EXIT $SMSGetResourceIDError
ENDFUNCTION
;================================================================
FUNCTION fnPingQuick($AddressOPTIONAL $PingCountOPTIONAL $PingWaitOPTIONAL $PacketSizeOPTIONAL $PingTTL)
;----------------------------------------------------------------
;--- This function will Ping an address and return an error code
;--- , an IP address and an IP host name.
;--- 0 - The address is on.
;--- 1 - The address is a slow link, such as RAS/ISDN/VPN.
;--- 2 - The address is off.
;--- 3 - The address does not exist.
;----------------------------------------------------------------
    GLOBAL $IPAddress$IPName$IPError$IPAvgTime$IPLinkSpeed
    DIM $WshShell$oExec$IPTime$IPErrorCode$PingLine$Index1$Index2$Index3$Index4
    $IPAddress = ''
    $IPName = ''
    $IPError = 'Unknown error'
    $IPErrorCode = 3
    IF $PingCount = ''
        $PingCount = 4
    ENDIF
    IF $PingWait = ''
        $PingWait = 4000
    ENDIF
    IF $PacketSize = ''
        $PacketSize = 32
    ENDIF
    IF $PingTTL = ''
        $PingTTL = 128
    ENDIF
    $IPTime = ''
    $WshShell = CreateObject ('WScript.Shell')
    $oExec = $WshShell.Exec ('%Comspec% /e:1024 /C ping -a -n ' + $PingCount + ' -w ' + $PingWait + ' -l ' + $PacketSize + ' -i ' + $PingTTL + ' ' + $Address)
    WHILE NOT $oExec.StdOut.AtEndOfStream
        $PingLine = $oExec.StdOut.ReadLine
        SELECT
            CASE InStr ($PingLine'Pinging ')
                $IPError = 'Pinging'
                $Index1 = 9
                IF InStr ($PingLine'[')
                    IF InStr ($Address'.')
                        $Index2 = InStr ($PingLine'.')
                    ELSE
                        $Index2 = InStr ($PingLine'[') - 1
                    ENDIF
                    $Index3 = InStr ($PingLine'[') + 1
                    $Index4 = InStr ($PingLine']')
                    $IPName = Substr ($PingLine$Index1$Index2 - $Index1)
                    $IPAddress = Substr ($PingLine$Index3$Index4 - $Index3)
                ELSE
                    $IPAddress = ''
                    $IPName = ''
                ENDIF
            CASE InStr ($PingLine'TTL expired in transit')
                $IPError = 'TTL expired in transit'
                $IPErrorCode = 2
            CASE InStr ($PingLine'TTL expired during reassembly')
                $IPError = 'TTL expired during reassembly'
                $IPErrorCode = 2
            CASE InStr ($PingLine'Request timed out')
                $IPError = 'Request timed out'
                $IPErrorCode = 2
            CASE InStr ($PingLine'host unreachable')
                $IPError = 'host unreachable'
                $IPErrorCode = 2
            CASE InStr ($PingLine'net unreachable')
                $IPError = 'net unreachable'
                $IPErrorCode = 3
            CASE InStr ($PingLine'protocol unreachable')
                $IPError = 'protocol unreachable'
                $IPErrorCode = 3
            CASE InStr ($PingLine'port unreachable')
                $IPError = 'port unreachable'
                $IPErrorCode = 3
            CASE InStr ($PingLine'Bad')
                $IPError = 'Bad'
                $IPErrorCode = 3
            CASE InStr ($PingLine'Unknown host')
                $IPError = 'Unknown host'
                $IPErrorCode = 3
            CASE InStr ($PingLine'Reply from')
                $IPError = 'Reply from'
                $IPErrorCode = 0
        ENDSELECT
        $PingLine = ReadLine(10)
    LOOP
    $PingLineQuick = $IPError
    EXIT $IPErrorCode
ENDFUNCTION

_________________________
Kelly