2017-12-27 3 views
1

Ich versuche, einen Ordner aus dem \AppData\Local\Microsoft_Corporation directory für alle Benutzer auf einem bestimmten Computer zu löschen. Ich habe ein paar PowerShell-Skripte gefunden, die diese Aufgabe für mich erledigen können, aber hier ist der Ordnername für jeden Benutzer etwas anders. Der Ordnername, den ich entfernen möchte, sieht so aus: harmony_Path_lzm5ceganmb1ihkqq2. Es hat immer das Wort "Harmonie" im Ordnernamen, also versuche ich, nach einem beliebigen Ordner mit diesem Schlüsselwort zu suchen und es zu entfernen.Löschen eines Ordners aus allen Benutzerverzeichnissen

Dies ist das Skript, das ich bisher habe:

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

Dies scheint jeden Ordner in \AppData\Local\Microsoft_Corporation\ entfernen gut zu funktionieren, aber wenn ich versuche, für „Harmonie“ Keywords mit dem Where-Object Cmdlets zu suchen. Ich kann es nicht richtig funktionieren.

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

Kann mir jemand dabei helfen?

+0

Welches Problem lösen Sie, indem Sie diese? –

Antwort

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 enthält einen String - Pfad. Es enthält keine Liste der zu verwendenden Dateien Where-Object Cmdlet.

Ein anderer Weg:

Get-ChildItem "C:\Users\*\AppData\Local\Microsoft_Corporation\*harmony*" -Directory | Remove-Item -WhatIf 
+0

Einfach einstecken und "-Verzeichnis" erwähnen wurde in v3 eingeführt. Alternative: '| {$ _. PSIsContainer} | ' – TheIncorrigible1

0

warum haben Sie setzen, wo-Objekt in ""? Powershell lesen Sie diese als String

versuchen dies mit:

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