Вместо $_.FullName
, используйте $_.Name
, чтобы получить только каталог name .
Ваш Select-Object
вызов является избыточным - фактически он не используется.
Хотя результаты и легко отправлять в файл .txt
с помощью, например, >
, лучше использовать более структурированный формат для последующей программной обработки.В простейшей форме это означает вывод в файл CSV через Export-Csv
;однако, как правило, наиболее точным способом сериализации объектов в файл является использование Export-CliXml
.
Использование Export-Csv
для сериализации:
$dir = 'C:\Users\folder'
Get-ChildItem -LiteralPath $dir -Recurse -Directory | ForEach-Object {
[pscustomobject] @{
Folder = $_.Name
Count = @(Get-ChildItem -LiteralPath $_.Fullname -File).Count
}
} | Export-Csv -NoTypeInformation results.csv
Обратите внимание, что вы могли бы упростить свою командузаменив вызов ForEach-Object
на вызов Select-Object
, использующий вычисленное свойство :
$dir = 'C:\Users\folder'
Get-ChildItem -LiteralPath $dir -Recurse -Directory |
Select-Object Name,
@{ n='Count'; e={@(Get-ChildItem -LiteralPath $_.Fullname -File).Count} } |
Export-Csv -NoTypeInformation results.csv