Azure Devops Powershell не отображает имена файлов для Get-ChildItem

Я использую следующую задачу в конвейере Azure DevOps на vmImage: ubuntu-latest:

- pwsh: Get-ChildItem *.* -Recurse -Path $(Pipeline.Workspace)
  displayName: 'Show folder contents for debugging'

Я делаю это, чтобы dir получить список файлов, загруженных на предыдущем этапе артефакта download конвейера. Я также пробовал обычный powershell вместо Powershell Core.

имена папок отображаются правильно, и записи для файлов, по-видимому, отображаются, но имена файлов вообще не включены. Вот часть вывода, которую я вижу:

/usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -Command . '/home/vsts/work/_temp/1f22f03a-d1c6-4983-a08e-39ed349876be.ps1'

    Directory: /home/vsts/work/1

UnixMode   User             Group                 LastWriteTime           Size
--------   ----             -----                 -------------           ----
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096

    Directory: /home/vsts/work/1/s

UnixMode   User             Group                 LastWriteTime           Size
--------   ----             -----                 -------------           ----
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
-rw-r--r-- vsts             docker             04/03/2022 16:22           3507
-rw-r--r-- vsts             docker             04/03/2022 16:22           2370
-rw-r--r-- vsts             docker             04/03/2022 16:22           1636
-rw-r--r-- vsts             docker             04/03/2022 16:22           1056
-rw-r--r-- vsts             docker             04/03/2022 16:22         913980

et cetera

    Directory: /home/vsts/work/1/s/src

UnixMode   User             Group                 LastWriteTime           Size
--------   ----             -----                 -------------           ----
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096
drwxr-xr-x vsts             docker             04/03/2022 16:22           4096

et cetera

Почему он не показывает имена файлов? Как я могу убедиться, что это так?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
2
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что эффективная ширина консоли составляет 80 символов (что отражено в [Console]::WindowWidth, и в этом случае столбец Name не подходит и просто удаляется.

В идеале Azure позволит вам указать большую ширину окна консоли (я не знаю, есть ли такая возможность — сообщите нам, если знаете),[1], но обходной путь должен передаваться в Out-String и использовать его параметр -Width; например.:

- pwsh: Get-ChildItem *.* -Recurse -Path $(Pipeline.Workspace) | Out-String -Width 160
  displayName: 'Show folder contents for debugging'

Примечание:

  • Как следует из названия командлета, он преобразует выходные объекты Get-ChildItem в струны, поэтому он подходит только для захвата представлений для отображения.

  • Как вы заметили, если вам не нужны столбцы все, более простое решение, которое дополнительно позволяет избежать строкового преобразования, заключается в передаче Select-Object; например.:

- pwsh: Get-ChildItem *.* -Recurse -Path $(Pipeline.Workspace) | Select-Object UnixMode, Length, Name
  displayName: 'Show folder contents for debugging'

[1] Unfortunately, setting the dimensions of the [Console] class - e.g. [Console]::WindowWidth = 160 is not supported on Unix-like platforms.

Я попытался это решение изменить BufferSize на Get-Host, но Azure сообщает «настройка BufferSize: операция не поддерживается на этой платформе.».

Jeroen 03.04.2022 22:14

Рад это слышать, @Jeroen. Хорошо, что Select-Object предлагает более простое решение, если нужны не все столбцы - я соответствующим образом обновил ответ. Да, параметр размер [Console] (к которому все сводится), к сожалению, не поддерживается на Unix-подобных платформах.

mklement0 03.04.2022 22:21

Другие вопросы по теме