Powershell 删除W2K3回收站的内容
编写Powershell脚本,删除虚拟服务器回收站中的所有内容。由于某种原因,我在查找Windows 2003回收站的路径时遇到了一个错误,无法找到该回收站以删除其中的所有内容。我想知道这里是否有人能给我一些建议,说明我对这段代码的错误之处:Powershell 删除W2K3回收站的内容,powershell,scripting,code-cleanup,recycle-bin,Powershell,Scripting,Code Cleanup,Recycle Bin,编写Powershell脚本,删除虚拟服务器回收站中的所有内容。由于某种原因,我在查找Windows 2003回收站的路径时遇到了一个错误,无法找到该回收站以删除其中的所有内容。我想知道这里是否有人能给我一些建议,说明我对这段代码的错误之处: if($serverVersion.name -like '*2003*'){ $dir = "\\$server" + '\C$\recycled' } elseif($serverVersion.name -like '*2008*'){ $dir =
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年制作两个一行程序?我意识到,目前我写这篇文章的方式没有利用Powershell的cmdlet,我想在弄清楚W2K3回收站的问题后对其进行改进。问题是,回收站位于widows server 2003 c:\recycler而不是c:\recycled中的这个位置,所以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远程处理运行我的,比如调用命令或本地计划任务,而不是使用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
}
}
我更新了代码,我认为这就是路径的问题所在,但是现在我得到一个新的错误,说指定的路径名太长。任何关于为什么会发生这种情况的想法(我甚至不知道这个异常存在)每当我运行这个程序时,我都会得到一个旧错误,即无法再次找到路径。