我对 C# 有很好的了解,对 powershell 也有非常基本的了解。我正在使用 Windows PowerShell CTP 3,这真的很有趣。但我想超越编写脚本/函数。C#有什么很酷的东西吗?
5 回答
在最高级别,您有两个不同的选项您可以从 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)
我认为使用 C# 和 PowerShell 可以做的最有趣的事情就是构建 CmdLet's。这些本质上是 PowerShell 的插件,它们是用托管代码编写的,作用类似于普通函数。它们有一个动词-名词对,并且您已经使用的许多功能实际上都是 cmdlet。
您可以通过以下两种方式之一查看它:
- 如何在 C# 程序中利用 PowerShell
- 如何在 PowerShell 中利用 C# 编程。
在某种程度上,它们是完全不同的问题,有不同的答案。
在 C# 中,您可以利用 PowerShell 引擎、运行空间、管道等。与 Exchante 一样,您可以使用 C# 来完成所有 GUI 工作,然后调用 PowerShell cmdlet 来完成所有困难工作。如果您可以找到要利用的 PowerShell cmdlet 或脚本,则此选项是合适的。
在 PowerShell 中,您可以使用 C# 来扩展您可以在 PowerShell 中执行的操作。您可以创建 cmdlt 和提供程序以使其他人能够访问应用程序数据。或者,您可以只创建可在 PowerShell 脚本中使用的对象。此选项是您帮助打开应用程序以更自动化方式进行管理的方式。
因此,根据您要做什么,您可以选择。
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),第二部分