2017-12-27 301 views
1

我试图从给定计算机上的所有用户中删除\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 
+0

就像在芯片中提及'-Directory'是在v3中引入的。替代方法:'| {$ _。PSIsContainer} |' – TheIncorrigible1

0

你为什么要放在哪里对象里面的 “”? 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 
    } 
} 
相关问题