如何将C#代码转换为PowerShell脚本?

时间:2010-01-26 23:19:21

标签: c# powershell powershell-v2.0

我经常需要将现有的C#代码段/ .CS文件转换为PowerShell脚本。我怎样才能自动化这个过程?

虽然我知道有些方法可以convert a .cs file to a cmdlet,但我只对将C#代码转换为脚本或模块感兴趣。

4 个答案:

答案 0 :(得分:68)

我知道你正在寻找能够以某种方式直接将C#转换为PowerShell的东西,但我认为这足以建议它。

在PS v1中,您可以使用已编译的.NET DLL:

PS> $client = new-object System.Net.Sockets.TcpClient
PS> $client.Connect($address, $port)

在PS v2中,您可以直接将C#代码添加到PowerShell中并使用它而不使用Add-Type进行“转换”(直接从MSDN复制)

C:\PS>$source = @"
public class BasicTest
{
    public static int Add(int a, int b)
    {
        return (a + b);
    }

    public int Multiply(int a, int b)
    {
        return (a * b);
    }
}
"@

C:\PS> Add-Type -TypeDefinition $source

C:\PS> [BasicTest]::Add(4, 3)

C:\PS> $basicTestObject = New-Object BasicTest 
C:\PS> $basicTestObject.Multiply(5, 2)

答案 1 :(得分:12)

有一个Reflector add-in for PowerShell,可以让您在类上看到静态方法的相应PowerShell脚本

示例中有一篇很好的帖子:http://blogs.msmvps.com/paulomorgado/2009/09/17/powershell-for-the-net-developer/

答案 2 :(得分:1)

Adam Discroll有created基于Roslyn的转换器,他甚至提供online code converter - 它似乎适用于简单的脚本,但是静态成员或类有问题。

答案 3 :(得分:0)

PowerShell Pro Tools for Visual Studio具有在PowerShell脚本中转​​换C#代码的功能。