Я запускаю следующий сценарий, чтобы получить список всех папок и файлов в формате .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 очень ограничены, поэтому я не знаю, как внести поправки в код.
Вы можете использовать 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"
Привет всем, у меня возникла новая проблема, из-за которой я получаю сообщение об ошибке «Не удалось найти часть пути». Я погуглил и обнаружил, что ошибка возникает, если длина пути превышает 256 символов. Не могли бы вы помочь включить все, независимо от длины символов. Спасибо
@DineshPadmanabhan обновил скрипт для обработки более длинных путей. пожалуйста, попробуйте. Спасибо.
В качестве альтернативы полезному решению Энтони рассмотрите возможность использования Select-String с вычисляемым свойством.