如何创建用于使用静态成员的 PowerShell 变量

本文关键字:静态成员 PowerShell 变量 用于 何创建 创建 | 更新日期: 2023-09-27 18:32:44

PowerShell 4.0

在我的应用程序中,Application类具有一组重要的属性、方法和事件。我想通过 app PowerShell 变量(它就像类的别名)与该成员一起工作。但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();
}

我该怎么做?

如何创建用于使用静态成员的 PowerShell 变量

可以使用

C# 中的typeof运算符来获取表示指定类型的实例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();
}