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}