44

我对 C# 有很好的了解,对 powershell 也有非常基本的了解。我正在使用 Windows PowerShell CTP 3,这真的很有趣。但我想超越编写脚本/函数。C#有什么很酷的东西吗?

4

5 回答 5

61

在最高级别,您有两个不同的选项您可以从 C# 程序托管 PowerShell 并通过 RunSpaces 和管道执行 PowerShell 命令。

或者,您可以在 PowerShell 中运行 C# 代码。这可以通过两种方式完成。使用 PowerShell 管理单元,一个提供 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)
于 2009-04-12T19:48:25.953 回答
34

我认为使用 C# 和 PowerShell 可以做的最有趣的事情就是构建 CmdLet's。这些本质上是 PowerShell 的插件,它们是用托管代码编写的,作用类似于普通函数。它们有一个动词-名词对,并且您已经使用的许多功能实际上都是 cmdlet。

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

于 2009-04-12T19:33:08.907 回答
8

答案是“视情况而定”。你可以用 c# 做各种各样的事情(构建窗口、Web 客户端和移动客户端)。

您可以从 C# 调用 powershell 脚本。看看这个网站==>链接

您甚至可以将您的 c# 代码转换为 powershell ==>链接

于 2009-04-12T19:27:13.663 回答
5

您可以通过以下两种方式之一查看它:

  1. 如何在 C# 程序中利用 PowerShell
  2. 如何在 PowerShell 中利用 C# 编程。

在某种程度上,它们是完全不同的问题,有不同的答案。

在 C# 中,您可以利用 PowerShell 引擎、运行空间、管道等。与 Exchante 一样,您可以使用 C# 来完成所有 GUI 工作,然后调用 PowerShell cmdlet 来完成所有困难工作。如果您可以找到要利用的 PowerShell cmdlet 或脚本,则此选项是合适的。

在 PowerShell 中,您可以使用 C# 来扩展您可以在 PowerShell 中执行的操作。您可以创建 cmdlt 和提供程序以使其他人能够访问应用程序数据。或者,您可以只创建可在 PowerShell 脚本中使用的对象。此选项是您帮助打开应用程序以更自动化方式进行管理的方式。

因此,根据您要做什么,您可以选择。

于 2009-05-22T10:51:29.037 回答
2

Scott Hanselman aka Hanselminutes有几个关于 Powershell、CmdLets、C# 等的播客。如果您想了解它是什么、它是如何工作的等等,这是最好的。在他的网站上搜索以获取播客。

他网站上的 PS 相关播客列表(按时间倒序排列):

#190:Powershell 现状/Lee Holmes 和 Jason Shirk
#162:Powershell 2.0
#49:Powershell/Bruce Payette
#36:Jeffrey Snover,Powershell 架构师
#24:Windows Powershell (MONAD),第二部分

于 2009-05-22T10:57:26.980 回答