Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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 删除临时文件夹的内容_Powershell_Directory_Temp - Fatal编程技术网

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,它得到的某些东西有不同的路径。