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

Gor*_*don 5 powershell pipeline

我正在使用数组列表来构建日志项序列以供稍后记录。工作起来很不错,但是 Add 方法将当前索引发送到管道。我可以通过将其发送到 $null 来解决这个问题,如下所示

$strings.Add('junk') > $null
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有某种机制可以全局更改 Add 方法的行为。现在我确实有数百次> $null重复,这真是丑陋。尤其是当我忘记一个的时候。

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

Gor*_*don 5

因此,这个线程的复活让我“回答”了我自己的问题,因为我很久以前就发现ArrayLists 已被弃用,并且Collections.Generic.List<T>是首选的解决方案,正如 @santiago-squarzon 今天指出的那样。

所以,对于任何想知道的人

$log = [System.Collections.Generic.List[String]]::new()
Run Code Online (Sandbox Code Playgroud)

或者旧的 New-Object 方式

$log = New-Object System.Collections.Generic.List[String]
Run Code Online (Sandbox Code Playgroud)

实例化集合,然后高兴地

$log.Add('Message')
Run Code Online (Sandbox Code Playgroud)

无需担心管道污染。您还可以使用以下命令一次添加多个项目

$log.AddRange()
Run Code Online (Sandbox Code Playgroud)

范围是另一个列表,如果您先转换为列表,则范围是一个数组。你可以插入一条消息,比如

$log.Insert(0, 'Message')
Run Code Online (Sandbox Code Playgroud)

所以是的,有很大的灵活性并且没有污染。获胜。