首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cmdlet类中打印powershell cmdlet参数

如何在cmdlet类中打印powershell cmdlet参数
EN

Stack Overflow用户
提问于 2013-08-11 16:09:39
回答 3查看 648关注 0票数 2

有人能帮我记录下实际发出的PowerShell命令以及参数吗?

我在C#中实现了一个cmdlet,如下所示

代码语言:javascript
复制
class GetMyCommand : PSCmdlet
{
    // parameter definitions
    ...

    void processRecord()
    {
        // Here I want print actual arguments passed to the cmdlet.
    }
}

如果有人打电话来

代码语言:javascript
复制
Get-MyCommand -Name Hello -File "test.txt"

我只想在processRecord函数中记录这个命令。

代码语言:javascript
复制
 "Get-MyCommand -Name Hello -File "test.txt""

显然,我知道cmdlet名称,但不确定如何打印确切的参数字符串。

Environment.CommandLine在常规的exe中工作,但是如何在cmdlet中这样做?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-11 16:30:09

MyInvocation.Line上使用PSCmdlet属性,例如:

代码语言:javascript
复制
void ProcessRecord() {
    var line = this.MyInvocation.Line
}
票数 2
EN

Stack Overflow用户

发布于 2013-08-11 16:40:20

查看InvocationInfo对象作为MyInvocation成员在PSCmdlet上可用。它提供的信息,如LineBoundParameters等,将对您有用。

成员(v=vs.85).aspx

票数 2
EN

Stack Overflow用户

发布于 2019-04-03 12:16:09

我将在$PSCmdlet.MyInvocation.Line中添加一个警告:

它只知道传入的一行。我使用它从我的Get-MailboxTrustee.ps1脚本中的管道中获得一个计数,并且我发现虽然这很好用:

代码语言:javascript
复制
$Mailboxes | .\Get-MailboxTrustee.ps1

这并不意味着:

代码语言:javascript
复制
$Mailboxes |
.\Get-MailboxTrustee.ps1

如果在第二个示例中检查$PSCmdlet.MyInvocation.Line,您将看到它是正确的:

.\Get-MailboxTrustee.ps1 (完全丢失了命令的$Mailboxes | <new line>部分)

可惜没有$PSCmdlet.MyInvocation.Lines.我们知道PowerShell显然是知道的,所以$PSCmdlet的实现似乎是缺少的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18173950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档