我有以下代码片段,它目前会删除临时目录中的所有内容并重新添加新的临时目录。
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本身。当我运行这个但是我没有删除任何东西。我的代码出了什么问题?
答案 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本身。