Документация , на которую вы ссылаетесь, к сожалению, не отражает тот факт, что общее у командлетов Out-*
состоит в использовании системы форматирования вывода PowerShell (что приводит к богатому, многострочному представлению объектов).
Учитывая, что журналы обычно строчно-ориентированы и в идеале должны подходить для программирования c обработки , Out
, следовательно, не правильный глагол [1] для использования.
Обратите внимание, что команды PowerShell не записывают свой (обычный) вывод в stdout (стандартный вывод) как таковой, учитывая, что PowerShell имеет более сложную систему 6 потоков вывода - см. about_Redirections - где номер потока 1
, поток успешного вывода, предназначен только для данных .
Add
, следуя примеру Add-Content
, добавляет к существующему ресурсу, а создает его по запросу .
Однако этот logi c не согласуется со встроенными командлетами, поскольку некоторые из них имеют только форму создания или замены по умолчанию (например, Out-File
) с необязательным переключателем -Append
в качестве opt-in к добавление содержимого.
Исходя из вышеизложенного, один из вариантов:
Используйте Add-Statistics
и, по умолчанию, выводите его в информационный поток (6
), через Write-Information
(при условии, что команда реализована в PowerShell), поэтому она не мешает выводу данных (успешный поток).
- Примечание :
Write-Information
по умолчанию - тихий , который можно изменить с помощью общего параметра -InformationAction
или предпочтительной переменной $InformationPreference
. В качестве альтернативы используйте Write-Host
, который (в PSv5 +) также записывает в информационный поток (6
), но его вывод отображает по умолчанию.
Либо добавьте параметр -OutFile
к Add-Statistics
для записи в файл вместо этого (создавая его по запросу), либо позвольте вызывающему перенаправить вывод информационного потока в файл с чем-то вроде 6>log.txt
(который работает, даже если Write-Information
вывод будет молчаливым, если не будет перенаправлен).
[1] Как указано в связанной документации, «глагол» здесь используется свободно; некоторые из утвержденных PowerShell глаголов не являются глаголами в строгом грамматическом смысле естественного языка.