Подтвердить что ты не робот

Ошибка формата таблицы Powershell

Я пытаюсь запустить следующий код, чтобы получить список локальных пользователей на машине.

gwmi win32_useraccount -Computername $env:computername -Filter "Domain='$env:computername'" |
  Format-Table Name,Description

Я получаю эту ошибку при запуске внутри файла PS1:

 The object of type
 "Microsoft.PowerShell.Commands.Internal.Format.FormatStartData" is not
 valid or not in the correct sequence. This is likely caused by a
 user-specified "f ormat-table" command which is conflicting with the
 default formatting.
     + CategoryInfo          : InvalidData: (:) [out-lineoutput],
 InvalidOperationException
     + FullyQualifiedErrorId :
 ConsoleLineOutputOutOfSequencePacket,Microsoft.PowerShell.Commands.OutLineOutputCommand

Я понимаю, что эта проблема возникает из-за того, как анализируются конвейеры, но я не могу понять, как обойти это.

4b9b3361

Ответ 1

Командлеты Format-* не выполняют окончательный вывод, а преобразуют их вход в последовательность объектов форматирования. Эти объекты форматирования преобразуются в фактический вывод одним из командлетов Out-, возможно, Out-Default.

Если script имеет несколько разных типов объектов форматирования, конечный вывод объединенных объектов из всех выражений в script Out-Default не может устранить несоответствия.

Исправить: добавить Out-Sting в конец каждого выходного генераторного конвейера для выполнения форматирования одного выражения за раз:

gwmi win32_useraccount -Computername $env:computername -Filter "Domain='$env:computername'" |
  Format-Table Name,Description | Out-String

Ответ 2

вы также можете попробовать:

gwmi win32_useraccount -Computername $env:computername -Filter "Domain='$env:computername'"  | Select-Object Name,Description  | Format-Table Name,Description

Фактически вы конвертируете в промежуточный PSCustomObject, и у вас все еще есть объект.