我尝试从\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
}
}
任何人都可以帮我吗?
答案 0 :(得分: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
答案 1 :(得分: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
}
}