2016-09-29 5 views
0

следующие 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. Как я могу предотвратить выход этого выхода на консоль с остальной частью моего вывода?
+2

'[пустота] $ таблица. Columns.Add ("NewFieldName") ' – PetSerAl

+0

@PetSerAl Это сделало это. Ты восхитителен. Вы должны отправить ответ :) – Benrobot

ответ

0

TLDR: Добавить [void] как этот

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

Почему? Поскольку PowerShell по умолчанию выводит возвращаемое значение/объект команды на консоль (или все, что получает выход).

Как я могу предотвратить выход этого выхода на консоль с остальной частью моего вывода? Благодарим @PetSerAl за то, что вы указали решение о добавлении [void] влево от команды. Это возвращает тип возврата команды в [void], который не будет выводиться на консоль.

После @PetSerAl указал мне в правильном направлении, я нашел эти страницы, которые помогли четкие вещи: