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

Я запускаю следующий сценарий, чтобы получить список всех папок и файлов в формате .csv в сетевом каталоге. Может ли кто-нибудь помочь внести изменения в сценарий, включив в CSV отдельный столбец, чтобы указать, является ли элемент папкой или файлом?

$Directory  = "X:\Sub\General"
Get-ChildItem -Path $Directory -Recurse -Force | ForEach {[PSCustomObject]@{
FullPath = $_.FullName  
FileName = $_.Name
Size = $_.Length
Extension = $_.Extension
Creation = $_.CreationTime
LastWriteTime = $_.LastWriteTime
}
} | Export-Csv -Path "C:\users\abc\Downloads\fulllist.csv"

Спасибо

Мои знания сценариев PS очень ограничены, поэтому я не знаю, как внести поправки в код.

🤔 А знаете ли вы, что...
С PowerShell можно создавать расписания задач и автоматически выполнять скрипты в определенное время.


1
52
1

Ответ:

Решено

Вы можете использовать PSIsContainer, измененный скрипт приведен ниже. В сгенерированном файле CSV появится новый столбец «Папка», который будет содержать значение «Истина», если это папка, в противном случае — «Ложь».

$Directory  = "X:\Sub\General"
Get-ChildItem -Path $Directory -Recurse -Force | ForEach {[PSCustomObject]@{
FullPath = $_.FullName  
FileName = $_.Name
Size = $_.Length
Extension = $_.Extension
Creation = $_.CreationTime
LastWriteTime = $_.LastWriteTime
IsFolder = $_.PSIsContainer
}
} | Export-Csv -Path "C:\users\abc\Downloads\fulllist.csv"

результирующий список в формате CSV

Спасибо @Iit обновил скрипт.

Директиву \\?\ можно использовать для чтения более длинных путей в PS

Обновлен скрипт для обработки длинных путей.

$Directory = "\\?\X:\Sub\General"  
    [PSCustomObject]@{
        FullPath = $_.FullName
        FileName = $_.Name
        Size = $_.Length
        Extension = $_.Extension
        Creation = $_.CreationTime
        LastWriteTime = $_.LastWriteTime
        IsFolder = $_.PSIsContainer
    }
} | Export-Csv -Path "C:\users\abc\Downloads\fulllist.csv"