Подавить список массивов Добавить метод конвейерного вывода - PullRequest
0 голосов
/ 10 июля 2019

Я использую Array List для построения последовательности элементов журнала для последующего журнала. Работает, но метод Add генерирует текущий индекс в конвейер. Я могу решить эту проблему, отправив его на $ null, например

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

но мне интересно, есть ли какой-нибудь механизм для глобального изменения поведения метода Add. Прямо сейчас у меня буквально тысячи > $null репутаций, что просто ужасно. Особенно, когда я забываю одну.

Мне бы очень хотелось увидеть какую-то глобальную переменную, которая превосходит все автоматические конвейеры. При написании большого скрипта я хочу преднамеренно отправить его в конвейер, поскольку неожиданная автоматическая отправка в конвейер - ОЧЕНЬ большая доля моих общих ошибок, и найти ее труднее всего.

1 Ответ

0 голосов
/ 11 июля 2019

Вы можете обернуть 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
...