上記のワイルドカード ステートメントを参照するすべてのレジストリ キーのワイルドカードを検索する*WAAgent*
か、削除することはできますか?*WAHost*
4 に答える
次のようなものを試すことができます:
Get-ChildItem -Path HKLM:\ -Recurse -Include *WAAgent* -ErrorAction SilentlyContinue | Remove-Item
Get-ChildItem -Path HKLM:\ -Recurse -Include *WAHost* -ErrorAction SilentlyContinue | Remove-Item
-Path
これらは 2 つの異なるドライブであるため、場所が HKLM (ローカル マシン) または HKCU (現在のユーザー) のどちらであるかを指定する必要があります。これは管理者として実行する必要があり、多くのエラーが発生します (そのため、以前はエラー-ErrorAction SilentlyContinue
を非表示にしていました)。
注意:個人的には、レジストリでワイルドカードを使用するのは賢明ではないと思いますが、知らないうちにシステムをクラッシュさせる可能性があるものを削除する可能性があるためです。私のお勧めは、削除したいキーへのパスのリストをコンパイルし、それを foreach でループして 1 つずつ削除することです。繰り返しますが、レジストリではワイルドカードは危険です。
キー値の代わりにプロパティ値を検索する (そして相対キーを削除する) 場合は、次のようなものを使用できます。
gci HKLM: -rec -ea SilentlyContinue | % { if((get-itemproperty -Path $_.PsPath)
-match "WAAGent") { $_.PsPath} } | Remove-Item
@Graimerの回答のように、注意してください!!!
すでに提案されているように、これは細心の注意を払って使用してください!! 以下は、すべてのレジストリハイブを通過します。見つかった一致するキーは、その下に深い構造を持つ可能性があり、すべてを削除していることに注意してください。実際にキーを削除するには、WhatIfスイッチを削除します。
Get-ChildItem Microsoft.PowerShell.Core\Registry:: -Include *WAAgent*,*WAHost* -Recurse |
Remove-Item -Recurse -Force -WhatIf
レジストリのパスにセッション ID があるという問題がありました。これを解決するために、レジストリの最初の部分を取得し、それを変数に格納し、これを foreach ループに使用して、ドライブ マッピングのキーを格納しました。
私の場合、上記は厳しすぎました。
以下は、セッションで(ローカル)ドライブマッピングを削除する例を示しています(私が抱えていた問題)。
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
}