gpt4 book ai didi

c# cmdlet 如何获取正在使用的完整命令

转载 作者:行者123 更新时间:2023-11-30 14:58:29 25 4
gpt4 key购买 nike

我正在用 C# 编写 cmdlet,我想知道是否可以在 C# 中检索带有 cmdlet 类中的名称、参数和值的命令。

例如,我有一个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...
}

然后我调用这个 cmdlet:获取数据 -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 (其他一切)。

这在 PowerShell 本身内部等效于 $MyInvocation

关于c# cmdlet 如何获取正在使用的完整命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com