1

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
4

1 に答える 1

3

あなたが使用することができます:

$Item = (Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU\' -Name mrulist).MRUList

または:

("Do you want to delete the run value " + $Item.MRUList)
于 2012-05-18T16:42:39.493 に答える