Jump to content

Pull variable from MDT


Recommended Posts

I am trying to use a variable from MDT in my AutoIT script. The only help I have been able to find on this is from this thread.  In MDT, my variable is named TermID. When I try this code, I would expect it to pre-populate the input box with the value of TermID from MDT.

$Var = "TermID"
$SCCM = ObjCreate("Microsoft.SMS.TSEnvironment")
$VarResult = $SCCM.Value($Var)
$termID = InputBox("TermID", "Enter the Terminal ID for this MDC", $VarResult, "", "", "", "100", "100")

However, when I run the script I get the error "Variable must be of type "Object"." References the third line. I am fairly new to scripting so I'm not too sure what that means or what I'm doing wrong. Any help would be greatly appreciated. 

Link to comment
Share on other sites

The following requirements apply if you want to access objects on remote computers:


  • The user running the script must have the appropriate permissions.
  • The Object on the remote computer must support DCOM (Distributed COM)
  • The remote computer must have 'Remote Registry Service' and 'File and Printer sharing' services running.

 

 

Are all of these satisfied?

Link to comment
Share on other sites

I think I may have just found an alternate way to approach this. MDT writes variables to a temporary .dat file that is in XML format. The XML looks like this: 

<?XML Version="1.0"?>
<MediaVarList Version="4.00.4345.0000">
  <var name="TERMID">
    <![CDATA[SPMXY]]>
  </var>
</MediaVarList>

I essentially need to get the value of the TERM ID, which in this case should be SPMXY. 

Link to comment
Share on other sites

OK, I worked it out! So here's a recap for anyone who may follow behind me:

I found that MDT writes a it's variables to C:\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT while it's running, then deletes it when it's finished. The .dat file is in XML format, so I was able to query it. The XML format looks like this: 

<?XML Version="1.0"?>
<MediaVarList Version="4.00.4345.0000">
  <var name="TERMID"><![CDATA[123]]></var>
  <var name="VARIABLE1"><![CDATA[ABC]]></var>
  <var name="VARIABLE2"><![CDATA[XYZ]]></var>
</MediaVarList>

The code that I used to query the different variables looks like this:

$datfile = "C:\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT"

If FileExists($datfile) Then ;check to see if file exists. If so, load the file
    ConsoleWrite("File Exists - Loading " & $datfile)
    Local $oXML = ObjCreate("Microsoft.XMLDOM")
    $oXML.load($datfile)


    For $oConfig in $oXML.selectNodes("//var") ;select each of the var nodes in a loop
        $sAttribute = $oConfig.getAttribute('name') ;for each var, get the 'name' attribute
            If $sAttribute == "TERMID" Then ;if the 'name atribute is 'TERMID', write that to a variable and echo the termID in the console
                $myTermID = $oConfig.text
                ConsoleWrite($myTermID & @CRLF)
            ElseIf $sAttribute == "Variable1" Then ;if the 'name atribute is 'Variable1', write that to a variable and echo the variable in the console
                $myVariable1 = $oConfig.text
                ConsoleWrite("Variable1 => " & $myVariable1 & @CRLF)
            ElseIf $sAttribute == "Variable2" Then ;if the 'name atribute is 'Variable2', write that to a variable and echo the variable in the console
                $myVariable2 = $oConfig.text
                ConsoleWrite("Variable 2 => " & $myVariable2 & @CRLF)
            EndIf

    Next
Else
    ConsoleWrite("Dat file does not exits.") ;If file does not exist, echo error to console
EndIf

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...