2013-04-26 47 views
0

Powershell noob here。我想要做的就是使用脚本删除旧用户H驱动器。我有一个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

你有什么问题?它读取文件吗?迭代其内容?或删除文件夹? – 2013-04-26 17:37:18

+0

嗨内特,我的问题是,我不知道如何检查,如果在CSV文件夹中的实际份额位置存在,并删除它 – 2013-04-26 17:44:58

+0

我会做的是做的第一件事情一定要正确地从CSV读取路径。在你的'foreach'循环中,执行'Write-Host $ Folder'来确保它确实是你的想法。 (在你列出的代码示例中从未分配过'$ Folders',所以你的问题可能不在你认为的地方。)一旦你写出了正确的路径,那么我认为你的'Remove-Item'电话应该工作。 – 2013-04-26 17:50:58

回答

0

使用test-path如果你想测试一个文件夹试图删除它之前存在。

并使用$folderpath.FolderPath从CSV文件访问FolderPath列。

test-path $folderpath.FolderPath 

但我认为你也可以先走一步,做remove-item。如果路径不存在,它只会返回一个错误。

+0

测试路径返回false.I可能有问题连接到我认为的网络共享。设置位置语法是否正常,或者是否必须执行其他操作才能连接到Nas存储。当我运行时出现以下错误: - @ {path = Test Folder 2} False Remove-Item:无法将参数绑定到参数'Path',因为它为null。 在C:\用户\ XXX \应用程序数据\本地的\ Temp \ f770ec1a-06e1-45e4-861e-1b0b06111bc5.ps1:6字符:18 +删除,项目-Path <<<< $ path.Folder -Recurse -Force + CategoryInfo:InvalidData:(:) [Remove-Item – 2013-04-26 18:37:51

+0

我个人会避免使用'set-location',而是在任何地方使用完整路径。 – 2013-04-26 19:15:46

+0

这些评论中的代码真的很难理解。你如何编辑你的原始问题并放入真实的代码。 – 2013-04-26 19:16:41

相关问题