0

我正在尝试编写一个 powershell 脚本来调用位于我的 Visual Studio (2010) 解决方案中的方法。调用的语法是什么,例如,像这样的方法

public void CreateData(string s, int i)

?

4

3 回答 3

6

您可以将您的类库项目编译成 dll,然后在 powershell 中使用反射加载 dll。这是一个例子:

c#代码:

public class MyClass {
    public void CreateData(string s, int i) {
        // your logic here
    }
}

电源外壳代码:

$lib = [Reflection.Assembly]::LoadFile("C:\path\to\MyClass.dll")
$obj = new-object MyClass
$result = $obj.CreateData("s_value",5)

此代码假定您的课程名为“MyClass”。您可能必须先在 powershell 中运行 set-executionpolicy RemoteSigned。

于 2012-07-20T02:39:06.893 回答
0

我会创建一个这样的程序:

class Program
{
    static void Main(string[] args)
    {
        if(args.Length > 1)
            CreateData(args[0], int.Parse(args[1]));
    }

    public static void CreateData(string s, int i)
    {
        File.WriteAllText(@"C:\data.txt", 
              string.Format("This is some data:  s = {0}  i = {1}", s, i)); 
    }
}

然后在程序编译后我有可执行文件“ConsoleApp.exe”

我启动以下 powershell 脚本:

& "Path_Of_The_Program\ConsoleApp.exe" "MyText" 100

它成功地将数据写入我的文件中。

于 2012-07-19T22:18:21.643 回答
0

您将需要构建您的 C# 类并使用 InvokeCSharp 之类的东西来调用 CreateData 方法

请参阅链接以获取一个很好的示例http://vincenth.net/blog/archive/2009/10/27/call-inline-c-from-powershell-with-invokecsharp.aspx

于 2012-07-19T22:09:17.343 回答