Powershell 删除临时文件夹的内容
我有下面的代码片段,它当前删除了我的临时目录中的所有内容,并重新添加了一个新的临时目录Powershell 删除临时文件夹的内容,powershell,directory,temp,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($server
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目录,而只是删除temp中的所有内容。我在
\*
变量的末尾添加了$dir
以便它尝试获取temp中的所有项目,而不是删除temp本身。但是,当我运行此命令时,我不会删除任何内容。我的代码有什么问题?根据删除项的PowerShell帮助文件,参数-recurse
有故障。它建议您获取childitem
并通过管道删除项
。请参阅下面帮助文件中的示例
-------------------------- EXAMPLE 4 --------------------------
C:\PS>get-childitem * -include *.csv -recurse | remove-item
根据删除项的PowerShell帮助文件
,-recurse
参数有故障。它建议您获取childitem
并通过管道删除项
。请参阅下面帮助文件中的示例
-------------------------- EXAMPLE 4 --------------------------
C:\PS>get-childitem * -include *.csv -recurse | remove-item
这对我来说是可行的,只要你满足预先要求,并且完全控制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
}
这对我来说是可行的,只要你满足预先要求,并且完全控制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
}
找出了如何做到这一点,并认为它可能对未来的人有用
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本身 找出了如何做到这一点,并认为这可能对将来的某个人有用
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本身 错误-递归行为在V4中得到修复。用户没有指定正在使用哪个版本的PowerShell。没有,但如果他有V4,他在帮助中不会发现对它的引用有错误。错误-递归行为在V4中得到修复。用户没有指定正在使用哪个版本的PowerShell。没有,但如果他有V4,在他的帮助中,他不会发现对它的引用有错误。您不需要在删除项周围使用%{}。它接受一个数组(来自Get ChildItem)作为输入。我不明白的一点是,当您的代码在两个块中都相同时,为什么要区分2003和2008。除非您认为目录路径区分大小写,而Windows中不区分大小写。这只是一个小代码段,它得到的不仅仅是temp,而且它得到的某些内容具有不同的路径。您不需要围绕删除项%{}。它接受一个数组(来自Get ChildItem)作为输入。我不明白的一点是,当您的代码在两个块中都相同时,为什么要区分2003和2008。除非你认为目录路径是区分大小写的,而这在Windows中是不存在的。这只是一个小的代码片段,它得到的不仅仅是temp,它得到的某些东西有不同的路径。