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
Powershell 从所有用户目录中删除文件夹_Powershell - Fatal编程技术网

Powershell 从所有用户目录中删除文件夹

Powershell 从所有用户目录中删除文件夹,powershell,Powershell,我正在尝试从给定计算机上所有用户的\AppData\Local\Microsoft\u Corporation目录中删除文件夹。我发现一些PowerShell脚本可以帮我完成这项任务,但这里额外的缺点是,每个用户的文件夹名称略有不同。我试图删除的文件夹名称如下-harmony\u Path\u lzm5ceganmb1ihkqq2。文件夹名称中总是有“harmony”一词,因此我尝试搜索任何带有此关键字的文件夹并将其删除 这是我到目前为止的脚本: $users = Get-ChildItem C

我正在尝试从给定计算机上所有用户的
\AppData\Local\Microsoft\u Corporation目录中删除文件夹。我发现一些PowerShell脚本可以帮我完成这项任务,但这里额外的缺点是,每个用户的文件夹名称略有不同。我试图删除的文件夹名称如下-
harmony\u Path\u lzm5ceganmb1ihkqq2
。文件夹名称中总是有“harmony”一词,因此我尝试搜索任何带有此关键字的文件夹并将其删除

这是我到目前为止的脚本:

$users = Get-ChildItem C:\Users
foreach ($user in $users){
   $folder = "$($user.fullname)\AppData\Local\Microsoft_Corporation\*"
     If (Test-Path $folder) {
          Remove-Item $folder -Recurse -Force -ErrorAction silentlycontinue -WhatIf
     }
}
这似乎可以很好地删除
\AppData\Local\Microsoft\u Corporation\
中的每个文件夹,但是当我尝试使用
Where Object
Cmdlet搜索“harmony”关键字时。我不能让它正常工作

$users = Get-ChildItem C:\Users
foreach ($user in $users){
   $folder = "$($user.fullname)\AppData\Local\Microsoft_Corporation\* | Where-Object {$_.Name -like "*harm*"}"
   If (Test-Path $folder) {
        Remove-Item $folder -Recurse -Force -ErrorAction silentlycontinue -WhatIf
   }
}
有人能帮我吗

$users = Get-ChildItem C:\Users
foreach ($user in $users){
   $folder = "$($user.fullname)\AppData\Local\Microsoft_Corporation\*Harmony*"
     If (Test-Path $folder) {
          Remove-Item $folder -Recurse -Force -ErrorAction silentlycontinue -WhatIf
     }
}
$folder
包含一个字符串路径。它不包含要使用
Where-Object
Cmdlet的文件列表

另一种方式:

Get-ChildItem "C:\Users\*\AppData\Local\Microsoft_Corporation\*harmony*" -Directory | Remove-Item -WhatIf

为什么要将where对象放在“”中?powershell将此读取为字符串

尝试使用以下方法:

$users = Get-ChildItem C:\Users
foreach ($user in $users){
   $folder = "$($user.fullname)\AppData\Local\Microsoft_Corporation\"
   If (Test-Path $folder) {
   Get-ChildItem $folder -Recurse | Where-Object {$_.Name -like "*harm*"}|Remove-Item -Force -ErrorAction silentlycontinue
   }
}

你这样做解决了什么问题?就像插话并提到
-目录
是在v3中引入的。备选方案:
{$\u.PSIsContainer}