Powershell 命令$table。Columns.Add( "NewFieldName" ) 导致意外输出到控制台



下面的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
预期输出:

我的问题是:

  1. 为什么?
  2. 如何防止此输出与其余输出一起输出到控制台?

TLDR:像这样添加[void]

[void]$table.Columns.Add("NewFieldName")

为什么?因为PowerShell倾向于在默认情况下将命令的返回值/对象输出到控制台(或任何正在接收输出的东西)。

如何防止此输出与其余输出一起输出到控制台?感谢@PetSerAl指出在命令左侧添加[void]的解决方案。这将命令的返回类型强制转换为[void],这将不会输出到控制台。

@PetSerAl给我指出了正确的方向后,我找到了这些帮助我澄清问题的页面:

  • 进入[void]
  • PowerShell陷阱#10

最新更新