我可以在由我托管的PowerShell中创建变量并启动类的方法吗?

安德烈·布什曼

PowerShell 4.0

我想在应用程序中托管PowerShell引擎,并希望能够在托管PowerShell中使用我的应用程序的API。在文档中阅读了PowerShell类及其成员的说明。PowerShell.exePowerShell_ISE.exe主机中,我可以创建变量,循环,启动类的静态方法和实例方法。我可以在PowerShell全班学习吗?我找不到有关它的示例。

这是我做的简单尝试:

using System;
using System.Linq;
using System.Management.Automation;

namespace MyPowerShellApp {

    class User {
        public static string StaticHello() {
            return "Hello from the static method!";
        }
        public string InstanceHello() {
            return "Hello from the instance method!";
        }
    }

    class Program {
        static void Main(string[] args) {
            using (PowerShell ps = PowerShell.Create()) {
                ps.AddCommand("[MyPowerShellApp.User]::StaticHello");
                // TODO: here I get the CommandNotFoundException exception
                foreach (PSObject result in ps.Invoke()) {
                    Console.WriteLine(result.Members.First());
                }
            }
            Console.WriteLine("Press any key for exit...");
            Console.ReadKey();
        }
    }
}
用户名

您的代码中有两个问题:

  1. 您需要将User类公开,以使PowerShell可见。
  2. 您应该使用AddScript而不是AddCommand

此代码将调用User类的两个方法,并将结果字符串输出到控制台:

using System;
using System.Management.Automation;

namespace MyPowerShellApp {

    public class User {
        public static string StaticHello() {
            return "Hello from the static method!";
        }
        public string InstanceHello() {
            return "Hello from the instance method!";
        }
    }

    class Program {
        static void Main(string[] args) {
            using (PowerShell ps = PowerShell.Create()) {
                ps.AddScript("[MyPowerShellApp.User]::StaticHello();(New-Object MyPowerShellApp.User).InstanceHello()");
                foreach (PSObject result in ps.Invoke()) {
                    Console.WriteLine(result);
                }
            }
            Console.WriteLine("Press any key for exit...");
            Console.ReadKey();
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

我可以使用超类的类工厂静态方法创建子类实例吗?

来自分类Dev

我可以使用修改后的变量而不在Matlab中创建新变量吗?

来自分类Dev

我可以创建一个透明地呈现方法和变量的类吗?

来自分类Dev

我可以合理地访问扩展类的变量吗?

来自分类Dev

iOS:我可以在字典中存储托管对象吗?

来自分类Dev

我可以在.NET中使用类作为变量吗

来自分类Dev

我可以在基类中重载纯虚方法吗?

来自分类Dev

我可以使用父类的方法创建子类的对象吗

来自分类Dev

我可以在查询中声明变量吗?

来自分类Dev

我可以在抽象类中创建一个为实例化类构造实例的方法吗?

来自分类Dev

我们可以在类中声明密封方法吗

来自分类Dev

我可以在Inno Setup中创建自己的类或单元吗?

来自分类Dev

我可以创建一个可以解包的类吗?

来自分类Dev

我可以在JavaScript中创建LinkedHashMap吗?

来自分类Dev

我可以在一个类中设置一个类变量吗?

来自分类Dev

我可以使用另一个类内部的函数中的变量吗?

来自分类Dev

我可以在Ruby中创建方法范围的常量吗?

来自分类Dev

我可以将类用作.NET中的变量吗?

来自分类Dev

我可以使用父类的方法创建子类的对象吗

来自分类Dev

我可以从内部类中的方法中引用类吗?

来自分类Dev

我可以在查询中声明变量吗?

来自分类Dev

我可以创建一个可以解包的类吗?

来自分类Dev

我可以从Java中的类实例中删除方法吗?

来自分类Dev

我可以在抽象类中创建静态工厂方法吗?

来自分类Dev

我可以从 Main 方法更改类方法中的变量吗?

来自分类Dev

我们可以在php中创建没有抽象方法的抽象类吗?

来自分类Dev

我可以在基“虚拟”方法的父类和祖父类中触发 `override` 方法吗

来自分类Dev

我可以在我的设置函数中调用基类方法吗

来自分类Dev

我可以让 Helm 自动删除由我的 Helm 创建的应用程序创建的资源吗?

Related 相关文章

  1. 1

    我可以使用超类的类工厂静态方法创建子类实例吗?

  2. 2

    我可以使用修改后的变量而不在Matlab中创建新变量吗?

  3. 3

    我可以创建一个透明地呈现方法和变量的类吗?

  4. 4

    我可以合理地访问扩展类的变量吗?

  5. 5

    iOS:我可以在字典中存储托管对象吗?

  6. 6

    我可以在.NET中使用类作为变量吗

  7. 7

    我可以在基类中重载纯虚方法吗?

  8. 8

    我可以使用父类的方法创建子类的对象吗

  9. 9

    我可以在查询中声明变量吗?

  10. 10

    我可以在抽象类中创建一个为实例化类构造实例的方法吗?

  11. 11

    我们可以在类中声明密封方法吗

  12. 12

    我可以在Inno Setup中创建自己的类或单元吗?

  13. 13

    我可以创建一个可以解包的类吗?

  14. 14

    我可以在JavaScript中创建LinkedHashMap吗?

  15. 15

    我可以在一个类中设置一个类变量吗?

  16. 16

    我可以使用另一个类内部的函数中的变量吗?

  17. 17

    我可以在Ruby中创建方法范围的常量吗?

  18. 18

    我可以将类用作.NET中的变量吗?

  19. 19

    我可以使用父类的方法创建子类的对象吗

  20. 20

    我可以从内部类中的方法中引用类吗?

  21. 21

    我可以在查询中声明变量吗?

  22. 22

    我可以创建一个可以解包的类吗?

  23. 23

    我可以从Java中的类实例中删除方法吗?

  24. 24

    我可以在抽象类中创建静态工厂方法吗?

  25. 25

    我可以从 Main 方法更改类方法中的变量吗?

  26. 26

    我们可以在php中创建没有抽象方法的抽象类吗?

  27. 27

    我可以在基“虚拟”方法的父类和祖父类中触发 `override` 方法吗

  28. 28

    我可以在我的设置函数中调用基类方法吗

  29. 29

    我可以让 Helm 自动删除由我的 Helm 创建的应用程序创建的资源吗?

热门标签

归档