原理
继承 System.Management.Automation.Cmdlet
类, 实现 ProcessRecord()
方法. ref
具体步骤
新建 classlib 工程
dotnet new classlib -o removeTest
nuget 下载依赖
依赖 System.Management.Automation
, 可以通过如下方式来导入
dotnet add package system.management.automation --version 7.3.4
或者找到xxx.csproj
文件添加
<ItemGroup>
<PackageReference Include="system.Management.Automation" Version="7.3.4" />
</ItemGroup>
编译的时候会自动下载依赖的包
编写一个 cmdlet 类
namespace yuxia.Cmdlet
{ using System.Management.Automation;
[Cmdlet(VerbsCommon.Remove,"test")]
public class RemoveTest : Cmdlet
{
[Parameter( Mandatory = true )]
public string? Filename
{
get { return filename; }
set { filename = value; }
}
private string? filename;
protected override void BeginProcessing(){
Console.WriteLine("=== cmdlet test start =======");
}
protected override void EndProcessing() {
Console.WriteLine("=== cmdlet test end =========");
}
protected override void ProcessRecord()
{
if (ShouldProcess(
string.Format("Deleting file {0}",filename),
string.Format("Are you sure you want to delete file {0}?", filename),
"Delete file"))
{
Console.WriteLine("{0} is removed", filename);
}
}
}
}
编译
dotnet build
使用
定位到 xxx.dll
目录,
import-module .\xxx.dll
接着就可以直接使用该命令了
当然了也可以通过