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

问题描述 投票:1回答:2

我正在尝试从给定计算机上的所有用户删除\AppData\Local\Microsoft_Corporation directory中的文件夹。我找到了一些可以为我完成此任务的PowerShell脚本,但是这里的额外皱纹是这个文件夹名称对于每个用户略有不同。我试图删除的文件夹名称看起来像这样 - harmony_Path_lzm5ceganmb1ihkqq2。它总是在文件夹名称中包含“和谐”一词,因此我尝试使用此关键字搜索任何文件夹并将其删除。

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

$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_Corporation\中的每个文件夹,但是当我尝试使用Where-Object Cmdlet搜索“和谐”关键字时。我无法让它正常工作。

$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
   }
}

谁能帮我这个?

powershell
2个回答
2
投票
$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

0
投票

为什么你把where-object放在“”里面? 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
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.