0

PowerShell 4.0

在我的应用程序中,Application该类具有一组重要的属性、方法和事件。我想通过appPowerShell 变量与这些成员一起工作(它就像类的别名)。但是Runspace.SessionStateProxy.SetVariable期望第二个参数中的类实例:

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

您可以typeof在 C# 中使用运算符来获取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 回答