Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 删除W2K3回收站的内容_Powershell_Scripting_Code Cleanup_Recycle Bin - Fatal编程技术网

Powershell 删除W2K3回收站的内容

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 =

编写Powershell脚本,删除虚拟服务器回收站中的所有内容。由于某种原因,我在查找Windows 2003回收站的路径时遇到了一个错误,无法找到该回收站以删除其中的所有内容。我想知道这里是否有人能给我一些建议,说明我对这段代码的错误之处:

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
    }
}

我更新了代码,我认为这就是路径的问题所在,但是现在我得到一个新的错误,说指定的路径名太长。任何关于为什么会发生这种情况的想法(我甚至不知道这个异常存在)每当我运行这个程序时,我都会得到一个旧错误,即无法再次找到路径。