删除W2K3回收站的内容

问题描述:

编写一个Powershell脚本,该脚本从虚拟服务器的回收站中删除所有内容。出于某种原因,我遇到了一个错误,找到Windows 2003回收站的路径,无法找到bin以删除它中的所有内容。想知道如果任何人在这里可以给我什么,我做错了这个代码片段一些建议:删除W2K3回收站的内容

if($serverVersion.name -like '*2003*'){ 
$dir = "\\$server" + '\C$\recycled' 
} 
elseif($serverVersion.name -like '*2008*'){ 
$dir = "\\$server" + '\C$\$recycle.bin' 
} 

$recycleArray = @() 
foreach ($item in get-childitem -path $dir){ 
    $recycleArray += $item 
} 

for ($i = 0; $i -le $recycleArray.length; $i++){ 
    $removal = $dir + "\" + $recycleArray[$i] 
    remove-item $removal -force -recurse 
    } 

我能删除一切从W2K8回收站也是正确的代码应该正常工作,一旦我能够找到回收站的路径。这是我收到的那些奇怪的错误消息的看图:

enter image description here

而且,出于好奇,是有办法来减少这些代码,使2俏皮话了2003年和2008年?我意识到目前我写这篇文章的方式并没有利用Powershell的cmdlet,而是想在我找出W2K3回收站出现问题后改进它。

问题是在widows server 2003的c:\ recycler中找不到回收站c:\回收,所以只能改变你的代码,它应该可以工作。

试试这个代码,看看它是否解决了这个问题

if($serverVersion.name -like '*2003*'){ 
$dir = "\\$server" + '\C$\recycled' 
} 
elseif($serverVersion.name -like '*2008*'){ 
$dir = "\\$server" + '\C$\$recycle.bin' 
} 


foreach ($item in get-childitem -path $dir){ 
    remove-item $item.FullName -Force -Recurse 
} 
+0

我更新了代码,我认为这就是路径问题,但是现在我得到一个新的错误,指出指定的路径名​​太长。任何想法为什么发生这种情况(我甚至不知道这个例外存在) – Valrok 2012-07-27 15:45:10

+0

不知道尝试编辑你的代码,如添加到我的帖子 – justinf 2012-07-27 15:51:27

+0

每当我运行这个我得到旧的错误,无法再次找到通路。 – Valrok 2012-07-27 19:53:31

所以我通过PowerShell远程像调用命令或本地的计划任务,而不是使用UNC路径运行我的,我只是检查所有驱动器的无论是2003/2008样式的回收站,因为该文件夹将出现在数据被删除的任何驱动器上。这可能或可能不适合您正在查找的内容,但也许可以帮助您。

$local_drives = Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3} 
foreach ($drive in $local_drives) 
{ 
    $drive_letter = $drive.DeviceID 
    $recycle_bins_03 = $drive_letter + '\RECYCLER' 
    if (Test-Path $recycle_bins_03) 
    { 
     Get-ChildItem $recycle_bins_03 -Force | Remove-Item -Force -Recurse 
    } 
    $recycle_bins_08 = $drive_letter + '\$RECYCLE.BIN' 
    if (Test-Path $recycle_bins_08) 
    { 
     Get-ChildItem $recycle_bins_08 -Force | Remove-Item -Force -Recurse 
    } 
}