我在c#中编写了cmdlet,我想知道在c#中是否可以使用cmdlet类中的name和paramter以及值来检索命令.
例如,我有一个cmdlet
[Cmdlet(VerbsCommon.Get, "Data")]
public class GetDataCmdlet : Cmdlet
{
[Parameter(Position = 0, Mandatory = true)]
public string DataSource ...
[Parameter(Position = 1, Mandatory = false)]
public string Login...
}
Run Code Online (Sandbox Code Playgroud)
然后我调用此cmdlet:Get-Data -DataSource IMAP
我如何尝试在GetDataCmdlet类中添加日志记录功能来记录被调用的完整cmdlet.我知道我可以通过以下方式获取命令名:string name = this.GetType().GetAttributeValue((CmdletAttribute cmd)=> cmd.VerbName +" - "+ cmd.NounName);
但参数及其价值如何?我可以做一个硬代码来获取数据值,但是当使用参数集和可选参数时会更复杂.是自动检索这些信息的方法吗?
谢谢!
而不是派生自Cmdlet派生的子类PSCmdlet,它增加了更多的功能(但增加了一个需求,Cmdlet从PowerShell运行时调用).
特别是PSCmdlet.MyInvocation允许访问InvocationInfo具有两个集合BoundParameters(连接到cmdlet参数的参数)和UnboundArguments(其他所有内容)的实例.
这是$MyInvocationPowerShell本身的内部等价物.