从Powershell中Get-ItemProperty的结果中检索特定字段

时间:2019-05-10 05:44:45

标签: windows powershell powershell-v4.0 ps1

我有以下Powershell脚本:

set.seed(24) 
df1 <- data.frame(day = 1:20, N = 20, col1 = rnorm(20),
    col2 = runif(20))

其输出是:

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

Write-Host($value)

我想将其中的EnableVirtualizationBasedSecurity字段的值转换为我的Powershell脚本中的变量。

@{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}

我如何在Powershell中执行此操作?

1 个答案:

答案 0 :(得分:2)

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()