0

パワーシェル 4.0

私のアプリケーションでは、Applicationクラスに一連の重要なプロパティ、メソッド、およびイベントがあります。appPowerShell 変数 (クラスのエイリアスのようなもの)を介してそのメンバーを操作したいと考えています。ただし、Runspace.SessionStateProxy.SetVariable2 番目のパラメーターでクラスのインスタンスが必要です。

using app = CompanyName.AppName.Application;
...
using (Runspace rs = RunspaceFactory.CreateRunspace()) {
    rs.ThreadOptions = PSThreadOptions.UseCurrentThread;
    rs.Open();

    // TODO: The problem is here (app is not the instance of 
    //the Application class
    rs.SessionStateProxy.SetVariable("app", app); 

    rs.SessionStateProxy.SetVariable("docs", app.DocumentManager);

    using (PowerShell ps = PowerShell.Create()) {
        ps.Runspace = rs;

        ps.AddScript("$docs.Count");
        ps.Invoke();
    }
    rs.Close();
}

どうすればいいですか?

4

1 に答える 1

2

typeofC# で operator を使用してSystem.Type、指定した型を表すインスタンスを取得できます。PowerShell では、静的メンバー演算子::を使用して、特定の型の静的メンバーにアクセスできます。

using app = CompanyName.AppName.Application;
...
using (Runspace rs = RunspaceFactory.CreateRunspace()) {
    rs.ThreadOptions = PSThreadOptions.UseCurrentThread;
    rs.Open();

    rs.SessionStateProxy.SetVariable("app", typeof(app)); 

    using (PowerShell ps = PowerShell.Create()) {
        ps.Runspace = rs;

        ps.AddScript("$app::DocumentManager");
        ps.Invoke();
    }
    rs.Close();
}
于 2016-01-31T23:59:49.053 に答える