powershell - 抑制数组列表添加方法管道输出
问题描述
我正在使用一个数组列表来构建一系列日志项以供以后记录。工作一种享受,但 Add 方法将当前索引发送到管道。我可以通过将它发送到 $null 来解决这个问题,就像这样
$strings.Add('junk') > $null
但我想知道是否有某种机制可以全局更改 Add 方法的行为。现在我确实有成千上万的> $null
声誉,这很丑陋。尤其是当我忘记一个的时候。
我真的很想看到某种超越所有自动流水线的全局变量。在编写大型脚本时,我想故意发送到管道,因为意外的自动发送到管道是我所有错误的很大一部分,并且最难找到。
解决方案
您可以使用自定义方法将您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
推荐阅读
- android - 如何在 WebView 中更新请求标头
- angular - 从 Angular HttpClient 使用 Spring Boot StreamingResponseBody
- sql - 我在寻找交叉连接吗?
- elixir - 获取迭代完成长生不老药的计数
- centos - Apache2 - htop 中奇怪的 sh 进程?
- javascript - 如何访问此“对象”的内容?
- mpandroidchart - mpandroidchart 散点图中点的颜色没有变化
- uml - 具有相互依赖的枚举的 UML 图
- python - 谁能告诉我出了什么问题,当我运行它时,浏览器显示“无法访问此站点”
- javascript - 如何仅禁用 html5 datepicker 上的选定日期?