Получить определенное поле из результата Get-ItemProperty в Powershell - PullRequest
0 голосов
/ 10 мая 2019

У меня есть следующий скрипт powershell:

$registrypath = "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard"
$Name = "EnableVirtualizationBasedSecurity"
$ExpectedValue = "1"
$value = Get-ItemProperty -Path $registrypath -Name $Name

Write-Host($value)

Его вывод:

    @{EnableVirtualizationBasedSecurity=1; PSPath=Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard; PSParentPath=Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control; PSChildName=DeviceGuard; PSDrive=HKLM; 
PSProvider=Microsoft.PowerShell.Core\Registry}

Я хочу получить значение поля EnableVirtualizationBasedSecurity в нем в переменную в моем powershellскрипт.

Как $SpecificFieldValue = $value.get(EnableVirtualizationBasedSecurity);

Как мне сделать это в powershell?

1 Ответ

2 голосов
/ 10 мая 2019

Get-ItemProperty предлагает вам PSCustomObject в качестве ответа.

Это означает, что вы можете напрямую получить значение свойства следующим образом:

$value.EnableVirtualizationBasedSecurity

или напрямую сохранить значение вGet-ItemProperty -вызов вот так:

(Get-ItemProperty -Path $registrypath -Name $Name).EnableVirtualizationBasedSecurity

или вот так

Get-ItemProperty -Path $registrypath -Name $Name | Select-Object -Expandproperty EnableVirtualizationBasedSecurity

Я думаю, проблема в том, что вы ожидаете, что ответ будет hashtableвместо PSCustomObject.

Вы можете получить информацию об объектном типе ответа, просто добавив () вокруг вызова и вызвав метод getType():

(Get-ItemProperty -Path $registrypath -Name $Name).GetType()
...