PowerShell Get-Childitem меняет вывод - PullRequest
0 голосов
/ 23 октября 2019

Заметил странное поведение с PowerShell Get-ChildItem. Я делаю что-то подобное в моем скрипте:

New-PSDrive -Name "R" -PSProvider "FileSystem"-Root "\\server\share"
$files = Get-ChildItem "R:/" | Select-Object -Property * -ExcludeProperty VersionInfo
$files | export-csv -Path "output.csv" -Delimiter ";" 

Get-ChildItem возвращает объект со свойствами, такими как BaseName, FullName, Parent, Root, ...

Проблема, с которой я столкнулсянедавно (или на некоторых сетевых ресурсах, которые я монтирую) изменились свойства объекта, возвращаемого Get-ChildItem. Раньше был этот список:

PSPath  PSParentPath    PSChildName PSDrive PSProvider  PSIsContainer   Mode    BaseName    Target  LinkType    Name    FullName    Parent  Exists  Root    Extension   CreationTime    CreationTimeUtc LastAccessTime  LastAccessTimeUtc   LastWriteTime   LastWriteTimeUtc    Attributes

, а на последнее время (или, как уже упоминалось, для определенной общей папки, еще не выяснили), были добавлены следующие свойства:

Length  DirectoryName   Directory

В моем CSV у меня теперь есть 3 дополнительных столбца между Name и IsReadOnly, добавлены вышеупомянутые 3 свойства. Кто-нибудь знает, связано ли это с обновлением PowerShell или с конкретным сервером, для которого была смонтирована общая папка?

1 Ответ

0 голосов
/ 23 октября 2019

Как указано @AdminOfThings, Get-ChildItem может возвращать несколько типов объектов: DirectoryInfo и FileInfo, где только FileInfo имеет свойства Directory , DirectoryName и Length . Поэтому при экспорте результатов из Get-ChildItem в файл CSV. Этот файл будет содержать только 3 столбца, если папка также содержит файлы.

Следующая документация описывает поведение export-csv в случае отправки нескольких объектов с разными типами Microsoft Powershell6.0 :

Когда вы отправляете несколько объектов в Export-CSV, Export-CSV организует файл на основе свойств первого отправленного вами объекта. Если у остальных объектов нет одного из указанных свойств, значение свойства этого объекта равно нулю, как представлено двумя последовательными запятыми. Если оставшиеся объекты имеют дополнительные свойства, эти значения свойств не включаются в файл.

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

...