[英]Deleting contents of W2K3 recycle bin
编写Powershell脚本,删除虚拟服务器的回收站中的所有内容。 出于某种原因,我遇到了错误,找到了Windows 2003回收站的路径,无法找到bin以删除其中的所有内容。 想知道这里是否有人可以给我一些建议,告诉我这个代码片段我做错了什么:
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回收站中的所有内容,这样一旦我能够找到回收站的路径,代码就能正常工作。 这是我收到的那些好奇的错误消息的图片:
此外,出于好奇,有没有办法减少所有这些代码,并为2003年和2008年制作2个单行? 我意识到,我写出来的当前方式没有利用Powershell的cmdlet,并且一旦我弄清楚W2K3回收站的问题就想改进它。
问题是,在widows server 2003 c:\\ recycler中的这个位置找到了回收站而不是c:\\ recycle所以jsut会更改你的代码,它应该可以工作。
尝试此代码,看看它是否解决了问题
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
}
所以我通过powershell远程控制,如Invoke-Command或本地计划任务,而不是使用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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.