2009-11-01 4 views
5

J'essaie d'écrire un script d'ouverture de session WSH. Les administrateurs de l'entreprise doivent être en mesure de personnaliser l'exécution du script et d'exécuter des scripts supplémentaires pour des emplacements et des utilisateurs spécifiques. Afin de faciliter leur travail, j'aimerais fournir une API à laquelle les administrateurs peuvent accéder dans leurs scripts. Si j'écris mon API en utilisant JScript, serait-il possible d'initialiser les objets que je définis via VBScript? Par exemple, considérez le code suivant:Puis-je initialiser des objets écrits en JScript à partir de VBScript?

<!-- 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> 

Existe-t-il un moyen d'accomplir ce que j'essaye de faire? VBScript et JScript semblent être en désaccord sur la façon d'initialiser un objet.

Répondre

7

Cependant, une fois l'objet initialisé, il est reconnu par les deux langues. Pour contourner ce problème, j'ai dû créer l'objet dans JScript, puis le renvoyer à l'appelant VBScript, comme illustré ci-dessous.

<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

Juste ce dont j'avais besoin – JoshHetland

Questions connexes