有人能帮我记录下实际发出的PowerShell命令以及参数吗?
我在C#中实现了一个cmdlet,如下所示
class GetMyCommand : PSCmdlet
{
// parameter definitions
...
void processRecord()
{
// Here I want print actual arguments passed to the cmdlet.
}
}如果有人打电话来
Get-MyCommand -Name Hello -File "test.txt"我只想在processRecord函数中记录这个命令。
"Get-MyCommand -Name Hello -File "test.txt""显然,我知道cmdlet名称,但不确定如何打印确切的参数字符串。
Environment.CommandLine在常规的exe中工作,但是如何在cmdlet中这样做?
谢谢
发布于 2013-08-11 16:30:09
在MyInvocation.Line上使用PSCmdlet属性,例如:
void ProcessRecord() {
var line = this.MyInvocation.Line
}发布于 2013-08-11 16:40:20
查看InvocationInfo对象作为MyInvocation成员在PSCmdlet上可用。它提供的信息,如Line,BoundParameters等,将对您有用。
成员(v=vs.85).aspx
发布于 2019-04-03 12:16:09
我将在$PSCmdlet.MyInvocation.Line中添加一个警告:
它只知道传入的一行。我使用它从我的Get-MailboxTrustee.ps1脚本中的管道中获得一个计数,并且我发现虽然这很好用:
$Mailboxes | .\Get-MailboxTrustee.ps1这并不意味着:
$Mailboxes |
.\Get-MailboxTrustee.ps1如果在第二个示例中检查$PSCmdlet.MyInvocation.Line,您将看到它是正确的:
.\Get-MailboxTrustee.ps1 (完全丢失了命令的$Mailboxes | <new line>部分)
可惜没有$PSCmdlet.MyInvocation.Lines.我们知道PowerShell显然是知道的,所以$PSCmdlet的实现似乎是缺少的地方。
https://stackoverflow.com/questions/18173950
复制相似问题