Hilfe beim Übersetzen von VBS in AutoIt

  • Hallo zusammen,

    ich brauche mal wieder eure Hilfe. Ich versuche einen VBS Code in AutoIt zu portieren. Es geht darum eine Tasksequence in SCCM 2007 zu erstellen. In VBS funktioniert es wunderbar. In AutoIt bekomme ich eine Fehlermeldung:

    G:\Test.au3 (25 : ==> The requested action with this object has failed.:
    $oOutParams = $oConnection.ExecMethod("SMS_TaskSequencePackage", "SetSequence", $oInParams)
    $oOutParams = $oConnection.ExecMethod("SMS_TaskSequencePackage", "SetSequence", $oInParams)^ ERROR

    und hier der AutoIt Code dazu:

    [autoit]


    Global $strSmsServer = "."

    [/autoit][autoit][/autoit][autoit]

    $oSwbemLocator = ObjCreate("WbemScripting.SWbemLocator")
    $oSwbemConnection = $oSwbemLocator.ConnectServer($strSmsServer, "root\sms")
    $oProviderLoc = $oSwbemConnection.InstancesOf("SMS_ProviderLocation")
    For $oLocation In $oProviderLoc
    If $oLocation.ProviderForLocalSite = True Then
    $oSwbemConnection = $oSwbemLocator.ConnectServer($oLocation.Machine, "root\sms\site_" & $oLocation.SiteCode)
    $sSiteCode = $oLocation.SiteCode
    ExitLoop
    EndIf
    Next
    $oConnection = $oSwbemConnection
    $oTaskSequence = $oConnection.Get("SMS_TaskSequence").SpawnInstance_()

    $oTaskSequencePackage = $oConnection.Get("SMS_TaskSequencePackage").SpawnInstance_()

    $oTaskSequencePackage.Name = "New task sequence package"
    $oTaskSequencePackage.Description = "A new task sequence package description"

    $oPackageClass = $oConnection.Get("SMS_TaskSequencePackage")
    $oInParams = $oPackageClass.Methods_("SetSequence").inParameters.SpawnInstance_()
    $oInParams.TaskSequence = $oTaskSequence
    $oInParams.TaskSequencePackage = $oTaskSequencePackage
    $oOutParams = $oConnection.ExecMethod("SMS_TaskSequencePackage", "SetSequence", $oInParams)

    [/autoit]

    Zum Vergleich hier der VBS Code

    Die Beschreibung der Klasse gibt es hier:
    http://msdn.microsoft.com/en-us/library/cc144760.aspx

    Wäre echt cool wenn jemand eine Idee hätte wo das Problem liegt.
    Vielen Dank schon mal...

    Einmal editiert, zuletzt von edmann (1. Februar 2011 um 08:51)

  • So weit ich weiß, darf man in AutoIt keine Parameter weglassen, also:

    [autoit]

    $oOutParams = $oConnection.ExecMethod("SMS_TaskSequencePackage", "SetSequence", $oInParams, Default, Default)

    [/autoit]
  • Vielen Dank für die Antwort. Leider hats nicht funktioniert. Gleiche Fehlermeldung:

    D:\test.au3 (25) : ==> The requested action with this object has failed.:
    $oOutParams = $oConnection.ExecMethod("SMS_TaskSequencePackage", "SetSequence", $oInParams, Default, Default)
    $oOutParams = $oConnection.ExecMethod("SMS_TaskSequencePackage", "SetSequence", $oInParams, Default, Default)^ ERROR

    Wenn man in VBS Parameter weglässt, werden sich doch automatisch mit Null ersetzt? Entspricht der Default dem Null wert?

  • Problem gelöst.
    Ich habe die Zeilen

    [autoit]


    $oInParams.TaskSequence = $oTaskSequence
    $oInParams.TaskSequencePackage = $oTaskSequencePackage

    [/autoit]

    duch:

    [autoit]


    $oInParams.Properties_.Item("TaskSequence") = $oTaskSequence
    $oInParams.Properties_.Item("TaskSequencePackage") = $oTaskSequencePackage

    [/autoit]

    ersetzt und schon hats funktioniert.
    Lösung gefunden unter:
    http://msdn.microsoft.com/en-us/library/…4(v=vs.85).aspx

    Vielen Dank für eure Unterstützung.

  • Zitat

    Schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)

    Zitat von autoBert