2017-12-27 267 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 
    } 
} 
相關問題