2013-04-26 2 views
0

Powershell noob здесь. В основном я хочу удалить старые диски пользователей с помощью скрипта. У меня есть файл CSV, который выглядит следующим образом: -Удаление папки массовой сети с использованием Powershell

Folder Path 
u:\users\xxx1 
u:\users\xxx2 

и так далее.

Эти пути расположены на сервере nas. Я хочу прочитать путь из csv, и если папка существует, удалите ее. Я попробовал пару вещей безрезультатно.

Set-Location "\\XXX-nas1\users" 
$TargetFolder = Import-Csv H:\folderdeletetest.csv 
ForEach ($Folder in $Folders) { 

Remove-Item -Path $Folder.Folder -Recurse -Force 
} 

Мне было интересно, смогу ли я получить помощь. Это будет высоко оценено. Приветствия Привет WVC


Csv выглядит, как показано ниже:

FolderPath 
u:\users\xxx1 
u:\users\xxx2 

Код:

Set-Location "\\xxx-nas1\users" 
$TargetFolder = Import-Csv c:\folderdeletetest.csv 
ForEach ($folderpath in $TargetFolder) { 

    Remove-Item -Path $folderpath.Folder -Recurse -Force 
} 

Цель состоит в сравнении, если папка в CSV существует на сетевом ресурсе. Если он существует, удалите его. Если его проще сделать с помощью текстового файла без абсолютного пути (например, имя папки только в текстовом файле). Я могу изменить это на это. Спасибо

+0

В чем проблема, с которой вы сталкиваетесь? Он читает файл? Итерирование над его содержимым? Или удаление папок? –

+0

Привет, Nate, проблема у меня есть, я не знаю, как проверить, существует ли папка в csv в фактическом местоположении и удалять ее. –

+0

Первое, что я хотел бы сделать, это убедиться, что вы правильно прочитали путь из csv , В вашем цикле 'foreach' сделайте' Write-Host $ Folder', чтобы убедиться, что это действительно то, что вы думаете. ('$ Folders' никогда не назначался в списке кода, который вы перечисляете, поэтому ваша проблема может быть не такой, как вы думаете.) После того, как вы получили правильные пути, я думаю, что ваш' Remove-Item' вызов должен работать. –

ответ

0

Используйте test-path, если вы хотите проверить, существует ли папка, прежде чем пытаться ее удалить.

И используйте $folderpath.FolderPath для доступа к столбцу FolderPath из вашего файла csv.

test-path $folderpath.FolderPath 

Но я думаю, что вы могли бы также просто идти вперед и делать remove-item. Если путь не существует, он просто вернет ошибку.

+0

test-path возвращает false. Возможно, у меня проблема с подключением к общему сетевому ресурсу. Синтаксис set-location выглядит нормально или мне нужно что-то сделать для подключения к хранилищу Nas. Я запускаю ниже ошибки при запуске: - @ {path = Test Folder 2} False Удалить элемент: невозможно привязать аргумент к параметру «Путь», потому что он равен нулю. В C: \ Users \ XXX \ AppData \ Local \ Temp \ f770ec1a-06e1-45e4-861e-1b0b06111bc5.ps1: 6 char: 18 + Удалить-элемент -Path <<<< $ path.Folder -Recurse -Force + CategoryInfo: InvalidData: (:) [Remove-Item –

+0

Лично я бы избегал использования 'set-location' и вместо этого использовал полные пути везде. –

+0

В этих комментариях очень сложно понять код. Как насчет того, как вы отредактируете исходный вопрос и поместите в настоящий код. –

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