2009-11-01 6 views
5

Estoy tratando de escribir una secuencia de comandos de inicio de sesión de WSH. Los administradores de toda la empresa deben poder personalizar la ejecución del script y ejecutar scripts adicionales para ubicaciones y usuarios específicos. Para facilitar su trabajo, me gustaría proporcionar una API a la que los administradores puedan acceder en sus scripts. Si escribo mi API usando JScript, ¿sería posible inicializar los objetos que defino a través de VBScript? Por ejemplo, considere el siguiente código:¿Puedo inicializar objetos escritos en JScript desde 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> 

¿Hay alguna manera de lograr lo que estoy tratando de hacer?

Respuesta

7

VBScript y JScript parecen estar en desacuerdo sobre cómo inicializar un objeto. Sin embargo, una vez que el objeto ha sido inicializado, es reconocido por ambos idiomas. Para evitar esto, tuve que crear el objeto en JScript y luego devolverlo al llamador de VBScript, como se muestra a continuación.

<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

Justo lo que necesitaba – JoshHetland

Cuestiones relacionadas