2009-11-01 5 views
5

Ich versuche, ein WSH-Anmeldeskript zu schreiben. Administratoren im gesamten Unternehmen müssen in der Lage sein, die Ausführung des Skripts anzupassen und zusätzliche Skripts für bestimmte Standorte und Benutzer auszuführen. Um ihre Arbeit zu erleichtern, möchte ich eine API bereitstellen, auf die die Administratoren in ihren Skripten zugreifen können. Wenn ich meine API mit JScript schreiben würde, wäre es möglich, die Objekte zu initialisieren, die ich über VBScript definiere? Betrachten Sie beispielsweise den folgenden Code:Kann ich Objekte, die in JScript aus VBScript geschrieben wurden, initialisieren?

<!-- The WSF logon script file --> 
<package> 
    <job> 
     <script language="JScript"> 
      // A demonstration function 
      function OverNineThousand() { 
       return 9001; 
      } 

      // A demonstration "class" 
      function WorkstationClass() { 
       var os = "Windows XP"; 

       this.getOperatingSystem = function() { 
        return os; 
       } 
      } 
     </script> 

     <script language="VBScript"> 
      Dim bigNumber, workstation 

      '// This assignment works properly. 
      bigNumber = OverNineThousand() 

      '// This assignment causes an error. Am I doing it wrong? 
      Set workstation = New WorkstationClass() 

      '// Execution never gets this far 
      WScript.Echo workstation.getOperatingSystem() 
     </script> 
    </job> 
</package> 

Gibt es eine Möglichkeit zu erreichen, was ich versuche zu tun?

Antwort

7

VBScript und JScript scheinen bei der Initialisierung eines Objekts nicht übereinzustimmen. Sobald das Objekt initialisiert wurde, wird es jedoch von beiden Sprachen erkannt. Um dies zu umgehen, musste ich das Objekt in JScript erstellen und es dann an den VBScript-Aufrufer zurückgeben, wie unten gezeigt.

<package> 
    <job> 
     <script language="JScript"> 
      // A demonstration "class" 
      function WorkstationClass() { 
       var os = "Windows XP"; 

       this.getOperatingSystem = function() { 
        return os; 
       } 
      } 

      function CreateWorkstation() { 
       return new WorkstationClass(); 
      } 
     </script> 

     <script language="VBScript"> 
      Dim workstation 

      '// This assignment causes an error. 
      '// Set workstation = New WorkstationClass() 

      '// This works! 
      Set workstation = CreateWorkstation() 

      '// Prints "Windows XP" 
      WScript.Echo workstation.getOperatingSystem() 
     </script> 
    </job> 
</package> 
+0

Genau was ich brauchte – JoshHetland