2014-11-12 3 views
1

Я пытаюсь удалить кучу файлов на основе файла csv. Файлы, перечисленные в файле csv, должны быть удалены из общего ресурса целевого файла. Когда я запускаю сценарий, я нахожусь в целевой папке, но я получаю следующее сообщение об ошибке:Powershell для удаления файлов на основе CSV

Remove-Item : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties 
do not match any of the parameters that take pipeline input. 
At line:9 char:56 
+  Get-Childitem | where {$_.Name -match $filename} | Remove-Item -verbose -$fi ... 
+              ~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (gp.html:PSObject) [Remove-Item], ParameterBindingException 
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.RemoveItemCommand 

код ниже:

$csvFile = Import-csv "C:\\DeleteFiles.csv" 
foreach($user in $csvFile) 
{ 
    $filename = $user.FileName 
    write-host $filename  
    Get-Childitem | where {$_.Name -match $filename} | Remove-Item -verbose -$fileName 
} 

ответ

1

По вашему комментарию, у вас есть несколько пустых имен файлов в файле CSV , Это решение должно быть более надежным:

$csvFile = Import-csv "C:\\DeleteFiles.csv" 
foreach($user in $csvFile) 
{ 
    $filename = $user.FileName 
    write-host "The filename is '$filename'" 
    if (test-path $filename) 
    { 
    Remove-Item -verbose $fileName 
    } 
    else 
    { 
    Write-Host "File '$filename' not found" 
    } 
} 
+0

Ваш код удалил все мои файлы. К счастью, я снова тестировал папку c: \ temp, а не фактическую папку. Поэтому я изменил код на Remove-Item -verbose $ filename, но получил следующую ошибку. Remove-Item: Невозможно связать аргумент с параметром «Путь», потому что это пустая строка. –

+0

Прошу прощения, Сьюган, я не хотел критиковать отрицательно. Ваше решение работало как прелесть. и вы правы, есть некоторая пустая строка в файлах csv. Мне нужно убедиться, что нет пустых строк. Еще раз спасибо –

+0

Не обижайтесь. Я просто рад, что вы работали изолированно. Но это хороший урок; Командлеты PowerShell часто принимают пустую строку, обозначающую * все *. Я тоже был сожжен этим раньше. – Swoogan

Смежные вопросы