Powershell スクリプトを実行して、レジストリから実行履歴をクリアしようとしています。それはうまく機能しますが、私が抱えている問題は、レジストリ値データを表示したいのですが、正しく表示できないことです。スクリプトは次のとおりです。
function Delete
{
$Reg = Get-RegistryValues 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU'
foreach ($Value in $Reg)
{
$Item = Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU\' -name $Value
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes",""
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No",""
$choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no)
$caption = "Warning!"
$message = ("Do you want to delete the run value "+$Item)
$result = $Host.UI.PromptForChoice($caption,$message,$choices,0)
if($result -eq 0)
{
Remove-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' -name $Value
}
if($result -eq 1) { }
}
}
function Get-RegistryValues($Key)
{
(Get-Item $Key).GetValueNames()
}
Delete
これを実行しようとするたびに、 $Message に対して次の出力が得られます
Do you want to delete the run value @{MRULIST=idhgfcaeb}
値データだけを取得する方法を知っている人はいますか?
idhgfcaeb
作業ソリューション:
function Delete
{
$Reg = Get-RegistryValues 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU'
foreach ($Value in $Reg)
{
if ($Value -eq 'MRUList') {Set-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU\' -name $Value -value ' '}
Else
{
$Item = (Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU\' -name $Value).$Value.TrimEnd("\1")
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes",""
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No",""
$choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no)
$caption = "Warning!"
$message = ("Do you want to delete the run value "+$Item)
$result = $Host.UI.PromptForChoice($caption,$message,$choices,0)
if($result -eq 0)
{
Remove-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' -name $Value
}
if($result -eq 1) { }
}
}
}
function Get-RegistryValues($Key)
{
(Get-Item $Key).GetValueNames()
}
Delete