删除临时文件夹的内容

时间:2013-11-01 16:14:03

标签: powershell directory temp

我有以下代码片段,它目前会删除临时目录中的所有内容并重新添加新的临时目录。

if($serverVersion.name -like "*2003*"){
    $dir = "\\$server" + '\C$\WINDOWS\Temp\*'
    remove-item $dir -force -recurse
    if($?){new-item -path "\\$server\admin$\Temp" -Type Directory}
}
elseif($serverVersion.name -like "*2008*"){
    $dir = "\\$server" + '\C$\Windows\Temp\*'
    remove-item $dir -force -recurse
    if($?){New-Item -Path "\\$server\admin$\Temp" -Type Directory}  
}

我正在尝试稍微改变代码,使其不再删除临时目录,而只是删除temp中的所有内容。我在\*变量的末尾添加了$dir,以便它尝试获取temp中的所有项目而不是删除Temp本身。当我运行这个但是我没有删除任何东西。我的代码出了什么问题?

3 个答案:

答案 0 :(得分:1)

这对我有用,只要您满足预先要求并完全控制Temp下的所有文件/文件夹

# Prerequisites
# Must have the PowerShell ActiveDirectory Module installed
# Must be an admin on the target servers
#
# however if you have no permissions to some folders inside the Temp,
# then you would need to take ownship first.
#
$Server = "server Name"
$dir = "\\$Server\admin$\Temp\*"
$OS = (Get-ADComputer $Server -Properties operatingsystem).operatingSystem
IF (($os -like "*2003*") -or ($os -like "*2008*"))
{
    remove-item $dir -Recurse -force
}

答案 1 :(得分:0)

根据remove-item的PowerShell帮助文件,-recurse参数有问题。它建议您get-childitem并管道remove-item。请参阅下面的帮助文件中的示例。

-------------------------- EXAMPLE 4 --------------------------

C:\PS>get-childitem * -include *.csv -recurse | remove-item

答案 2 :(得分:0)

想出如何做到这一点,并认为它可能对将来有用。

if($serverVersion.name -like "*2003*"){
    $dir = "\\$server" + '\C$\WINDOWS\Temp'
    Get-ChildItem -path $dir -Recurse | %{Remove-Item -Path $_.FullName -Force}
    if($?){new-item -path "\\$server\admin$\Temp" -Type Directory}
}
elseif($serverVersion.name -like "*2008*"){
    $dir = "\\$server" + '\C$\Windows\Temp'
    Get-ChildItem -path $dir -Recurse | %{Remove-Item -Path $_.FullName -Force}
    write-host "success?"
    if($?){New-Item -Path "\\$server\admin$\Temp" -Type Directory}  
}

使用get-childitem它会查看Temp内部的所有内容,而不会删除Temp本身。