C#和Powershell有哪些用途?

46

我对C#有相当的了解,对Powershell只有基础的认识。我正在使用Windows PowerShell CTP 3,非常有趣。但我想超越编写脚本/函数。是否有任何可以与C#一起做的很酷的东西?

5个回答

64

在最高级别上,有两种不同的选择:你可以从一个C#程序中托管PowerShell并通过RunSpaces和管道执行PowerShell命令。

或者,你可以在PowerShell内部运行C#代码。这可以通过PowerShell snapin(提供PowerShell cmdlet和导航提供程序的编译后的dll)或通过新的cmdlet Add-Type 来完成,它允许你动态地导入C#、VB、F#代码。从帮助信息中获取:

$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);
    }
}
"@

Add-Type -TypeDefinition $source
[BasicTest]::Add(4, 3)
$basicTestObject = New-Object BasicTest 
$basicTestObject.Multiply(5, 2)

10
为您的应用程序托管PowerShell作为脚本引擎是一个好主意,这样可以使用内置的.NET脚本和一个日益流行的语言来快速完成工具。+1. - Steven Murawski
4
有的。你可以使用[-Language {CSharp | CSharpVersion3 | VisualBasic | JScript}]标志。 - Scott Weinstein
第一行缺少"$" $source = @" - What Would Be Cool

34

我认为使用C#和PowerShell构建CmdLet是最有趣的事情。这些本质上是用托管代码编写并像普通函数一样运行的PowerShell插件。它们具有动词-名词对,你已经在使用的许多功能实际上都是在幕后作为cmdlet运行的。

http://msdn.microsoft.com/en-us/magazine/cc163293.aspx


+1 Cmdlets可以非常强大,例如为托管应用程序和服务提供命令行界面。 - Tormod Fjeldskår

7
答案是“这取决于你想做什么”。使用C#,您可以构建Windows、Web客户端和移动客户端等各种应用程序。
您可以从C#中调用PowerShell脚本。请查看此网站 ==> 链接 甚至可以将您的C#代码转换为PowerShell ==> 链接

5
您可以从两个方面来看待这个问题:
1.如何在C#程序中利用PowerShell
2.如何在PowerShell中利用C#编程。
从某种程度上来说,它们是有不同答案的不同问题。
从C#中,您可以利用PowerShell引擎、运行空间、管道等。就像Exchante一样,您可以使用C#来做所有GUI工作,然后调用PowerShell cmdlet来做所有困难的工作。如果您能找到要利用的PowerShell cmdlets或脚本,则此选项是合适的。
从PowerShell中,您可以使用C#来扩展您在PowerShell中所能做的事情。您可以创建cmdlts和提供程序,以使他人能够访问应用程序数据。或者您只需创建可在PowerShell脚本中使用的对象。这个选项是帮助您以更自动化的方式打开应用程序进行管理的方式。
因此,根据您想要做什么,您有不同的选择。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接