抑制数组列表添加方法管道输出

时间:2019-07-10 07:37:32

标签: powershell pipeline

我正在使用“数组列表”来构建一系列日志项,以便以后进行日志记录。可以处理,但是Add方法将当前索引发送到管道。我可以这样发送到$ null来解决这个问题

$strings.Add('junk') > $null

但是我想知道是否存在某种机制可以全局更改Add方法的行为。目前,我确实有成千上万个> $null声誉,这很丑陋。尤其是当我忘记一个。

我真的很想看到超越所有自动流水线的某种全局变量。编写大型脚本时,我想有意地发送到管道,因为意外的自动发送到管道是我总错误的很大一部分,也是最难发现的。

1 个答案:

答案 0 :(得分:0)

您可以使用自定义ArrayList方法将Add()包装在自定义对象中。

$log = New-Object -Type PSObject -Property @{
    Log = New-Object Collections.ArrayList
}
$log | Add-Member -Type ScriptMethod -Name Add -Value {
    Param(
      [Parameter(Mandatory=$true)]
      [string]$Message
    )

    $this.Log.Add($Message) | Out-Null
}

$log.Log.Add('some message')  # output on this is suppressed