2009-11-01 8 views
5

WSHログオンスクリプトを作成しようとしています。会社全体の管理者は、スクリプトの実行をカスタマイズし、特定の場所やユーザーに対して追加のスクリプトを実行できる必要があります。仕事を簡単にするために、管理者がスクリプトでアクセスできるAPIを提供したいと思います。 JScriptを使用してAPIを作成する場合、VBScriptで定義したオブジェクトを初期化することは可能でしょうか?たとえば、次のコードを考えてみましょう:JScriptで作成したオブジェクトを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> 

私は何をしようとしていますか?

答えて

7

VBScriptとJScriptは、オブジェクトを初期化する方法には不一致があるようです。ただし、オブジェクトが初期化されると、両方の言語で認識されます。この問題を回避するために、JScriptでオブジェクトを作成してから、次に示すようにVBScript呼び出し元に戻す必要がありました。

<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

ただ必要なもの – JoshHetland

関連する問題