При просмотре вашего последнего комментария вы используете foreach
l oop без захвата чего-либо, и после этого Export-Csv
захочет узнать, что вы экспортируете.
Если вы используете ForEach-Object
вместо foreach ($drive in $drives)
, вы можете использовать переменную $_
automati c, ПЛЮС вы можете направить результат в командлет Export-Csv
.
# create the CSV filename to output
$outFile = 'C:\{0}_FilesAudit_{1:dd-MM-yyyy}.csv' -f $env:COMPUTERNAME, (Get-Date)
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
# if your PowerShell version is less than 3.0 you'll need
# Get-ChildItem $_.Root -Recurse | Where-Object {!$_.PSIsContainer} |
Get-ChildItem $_.Root -Recurse -File -ErrorAction SilentlyContinue |
Select-Object @{Name = 'FileName'; Expression = {$_.FullName}} # maybe also select the Length property?
} | Export-Csv -Path $outFile -Delimiter ';' -NoTypeInformation
-ErrorAction SilentlyContinue
позволяет вы продолжаете итерацию, даже если у вас нет разрешений ни на одном из дисков / папок, что часто имеет место на диске C: *. 1013 * Это означает, что вы, вероятно, не получите complete список всех файлов.
Сказав это, вы уверены, что имеете разрешение на запись выходного CSV-файла на C:?