Windows
如何在 PowerShell 中解除安裝多個系統資料庫配置單元?(訪問被拒絕錯誤)
我已經將幾十個系統資料庫配置單元載入為
HKLM:\temp_$username\
. 現在,當我嘗試跑步時,ls HKLM:\temp_* | %{reg unload $_}
我得到了ERROR: Access is denied.
我正在執行具有提升權限的 PowerShell,並嘗試重新啟動 PowerShell ISE 以清除變數。我仍然收到錯誤。我可以使用 GUI 解除安裝蜂巢,並且可以為單個蜂巢執行命令
reg unload HKLM\temp_jimbob
(是什麼導致訪問被拒絕錯誤,我該如何解決?
該命令
ls HKLM:\temp_*
是導致“訪問被拒絕”錯誤的原因。執行此命令會使每個所需的系統資料庫配置單元都打開並且reg
程序無法訪問。這有點像第 22 條規則:沒有列表,蜂箱無法解除安裝,但列表一旦獲得就無法使用。要解決此問題,請使用 Name 屬性,即 a
[System.String]
與 a[Microsoft.Win32.RegistryKey]
:$foo = ls "hklm:\temp_*" | Select -ExpandProperty Name foreach($bar in $foo) { reg unload $bar }
請注意,它必須是兩行。嘗試通過管道傳輸 Select 的輸出將導致相同的錯誤。
如果您仍然收到錯誤,可能值得使用
[gc]::collect()
、pick throughGet-Variables
或重新啟動 PowerShell ISE 執行垃圾收集。