O comando ls HKLM:\temp_*
está causando o erro "acesso negado". Executar este comando está deixando cada seção de registro desejada aberta e inacessível para o programa reg
. É uma espécie de catch-22: sem a lista, as colmeias não podem ser descarregadas, mas a lista não pode ser usada uma vez obtida.
Para contornar isso, use a propriedade Name, que é [System.String]
versus [Microsoft.Win32.RegistryKey]
:
$foo = ls "hklm:\temp_*" | Select -ExpandProperty Name
foreach($bar in $foo)
{
reg unload $bar
}
Note que deve ser duas linhas. Tentar canalizar a saída de Select resultará no mesmo erro.
Se você ainda receber erros, pode valer a pena executar a coleta de lixo usando [gc]::collect()
, escolhendo Get-Variables
ou reiniciando o PowerShell ISE.