2013-01-22 5 views

Antwort

7

Sie können versuchen, so etwas wie:

Get-ChildItem -Path HKLM:\ -Recurse -Include *WAAgent* -ErrorAction SilentlyContinue | Remove-Item 
Get-ChildItem -Path HKLM:\ -Recurse -Include *WAHost* -ErrorAction SilentlyContinue | Remove-Item 

Sie haben in -Path angeben, ob sie die Lage sind in HKLM (lokale Maschine) oder HKCU (aktueller Benutzer), wie sie sind zwei verschiedene Antriebe. Dies muss als Admin ausgeführt werden, und wird viele Fehler geben (deshalb habe ich -ErrorAction SilentlyContinue verwendet, um sie zu verstecken).

ACHTUNG: Persönlich glaube ich nicht, dass es klug ist, Wildcards in der Registrierung zu verwenden, da es möglicherweise etwas löscht, von dem Sie nicht wussten, dass das System abstürzen könnte. Meine Empfehlung wäre, eine Liste von Pfaden zu den Schlüsseln zu kompilieren, die Sie entfernen möchten, und sie mit foreach zu durchlaufen, um sie einzeln zu löschen. Wiederum sind Platzhalter in der Registrierung GEFÄHRLICH.

3

Wenn Sie einen Eigenschaftswert suchen anstelle eines Schlüsselwert (und löschen Sie den Schlüssel einst) Sie so etwas wie diese verwenden:

gci HKLM: -rec -ea SilentlyContinue | % { if((get-itemproperty -Path $_.PsPath) 
    -match "WAAGent") { $_.PsPath} } | Remove-Item 

Wie für die Antwort des @ Graimer, seien Sie vorsichtig !! !

+0

Hatte eine Warnung dort selbst, aber machte es jetzt ein wenig klarer. Registry ist kein Platz für Wildcards in meinen Augen. Er sollte eine Liste von Schlüsseln bekommen und sie stattdessen durch eine foreach-Schleife laufen lassen. –

+1

@Graimer Ersetze de 'As' mit 'Like', vielleicht war es nicht klar, vorsichtig zu sein, auch mit meinem Code;) –

2

Wie alle bereits vorgeschlagen haben, verwenden Sie dies mit äußerster Vorsicht !! Das Folgende wird alle Registrierungsstrukturen durchlaufen. Denken Sie daran, dass ein gefundener passender Schlüssel eine tiefere Struktur haben kann und Sie alles löschen. Entfernen Sie den WhatIf-Schalter, um die Schlüssel tatsächlich zu löschen.

Get-ChildItem Microsoft.PowerShell.Core\Registry:: -Include *WAAgent*,*WAHost* -Recurse | 
Remove-Item -Recurse -Force -WhatIf 
0

Ich hatte das Problem, dass es eine Session ID im Pfad der Registrierung gab. Um dies zu lösen, ist der erste Teil der Registrierung, in einer Variablen gespeichert und verwendet dies für meine foreach-Schleife, wo die Schlüssel für Laufwerkszuordnungen gespeichert wurden.

Das obige war zu streng in meinem Fall.

Die folgende Abbildung zeigt ein Beispiel zum Entfernen von (lokalen) Laufwerkszuordnungen in einer Sitzung (das Problem, das ich hatte).

Start-Sleep -Seconds 20 

# This stores the Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\<SESSIONID>" 
$SessionInfo = Get-Item "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\*" 

cd "HKCU:\" 

Start-Sleep -Seconds 1 

$Items = Get-ChildItem "$SessionInfo\MyComputer\Namespace" 

foreach($Item in $Items){ 

     Remove-Item $Item -Force -Recurse -Verbose 

} 
Verwandte Themen