编写可在 powershell 中调用的 powershell class

Writing a powershell class callable in powershell

使用 Cmdlet,(and/or PSCmdlet),我可以创建

[Cmdlet(VerbsCommunications.Read, "Blah", SupportsShouldProcess = true)]
public class BlahBlah : PSCmdlet
{
  /// ...
}

然后,在 powershell 中,我可以调用命令

import-module .\Blah.dll -Verbose
Read-Blah
...

一切都很好。

但是我想创建一个 class 而不是 function 这样我就可以得到一个对象然后使用它在 powershell

类似

import-module .\Blah.dll -Verbose
$myClass = New-Object Blah
$myClass.Read
$myClass.Save -File x.txt
$myClass.BlahBlah
...

以上可以用C#完成吗?如果可以,怎么做?

如果您想从 .NET 程序集导入 class,您需要使用 Add-Type,而不是 Import-Module:

Add-Type -Path .\Blah.dll

此时,您的程序集中定义的所有 public class 都可以从 PowerShell 获得。