2009-11-01 15 views
5

Sto provando a scrivere uno script di accesso WSH. Gli amministratori di tutta l'azienda devono essere in grado di personalizzare l'esecuzione dello script ed eseguire script aggiuntivi, per posizioni e utenti specifici. Per rendere più facile il loro lavoro, vorrei fornire una API che gli amministratori possono accedere nei loro script. Se scrivo la mia API usando JScript, sarebbe possibile inizializzare gli oggetti che definisco tramite VBScript? Ad esempio, si consideri il seguente codice:Posso inizializzare oggetti scritti in JScript da 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> 

Esiste un modo per realizzare quello che sto cercando di fare?

risposta

7

VBScript e JScript sembrano non essere d'accordo su come inizializzare un oggetto. Tuttavia, una volta che l'oggetto è stato inizializzato, viene riconosciuto da entrambe le lingue. Per aggirare questo ho dovuto creare l'oggetto in JScript e quindi restituirlo al chiamante VBScript, come illustrato di seguito.

<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

Proprio quello di cui avevo bisogno – JoshHetland

Problemi correlati