下面的PowerShell脚本会导致意想不到的,在我的情况下是不需要的,输出到控制台:
$table = New-Object System.Data.DataTable
$table.Columns.Add("NewFieldName")
意想不到的输出:
AllowDBNull : True
AutoIncrement : False
AutoIncrementSeed : 0
AutoIncrementStep : 1
Caption : NewFieldName
ColumnName : NewFieldName
Prefix :
DataType : System.String
DateTimeMode : UnspecifiedLocal
DefaultValue :
Expression :
ExtendedProperties : {}
MaxLength : -1
Namespace :
Ordinal : 0
ReadOnly : False
Table : {}
Unique : False
ColumnMapping : Element
Site :
Container :
DesignMode : False
预期输出:
我的问题是:
- 为什么?
- 如何防止此输出与其余输出一起输出到控制台?
TLDR:像这样添加[void]
[void]$table.Columns.Add("NewFieldName")
为什么?因为PowerShell倾向于在默认情况下将命令的返回值/对象输出到控制台(或任何正在接收输出的东西)。
如何防止此输出与其余输出一起输出到控制台?感谢@PetSerAl指出在命令左侧添加[void]的解决方案。这将命令的返回类型强制转换为[void],这将不会输出到控制台。
@PetSerAl给我指出了正确的方向后,我找到了这些帮助我澄清问题的页面:
- 进入[void]
- PowerShell陷阱#10