使用 GetDwordValue .uvalue 返回多个值

使用 GetDwordValue .uvalue 返回多个值

在一些系统上,我让 GetDwordValue 返回重复值 (.uvalue),命令如下

$reg=Get-WmiObject -List -Namespace root\default -ComputerName $ip.ipaddress | Where-Object {$_.Name -eq "StdRegProv"}
$reg.GetDwordValue($HKLM,"System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server","enabled").uvalue

它返回值

1
1

如果我在没有 .uvalue 的情况下运行它,它会给我下面的输出,我知道它得到了 11 个重复项,但不知道为什么。

$reg.GetDwordValue($HKLM,"System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server","enabled")
__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     : 
__DYNASTY        : __PARAMETERS
__RELPATH        : 
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         : 
__NAMESPACE      : 
__PATH           : 
ReturnValue      : 0
uValue           : 1
PSComputerName   : 

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     : 
__DYNASTY        : __PARAMETERS
__RELPATH        : 
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         : 
__NAMESPACE      : 
__PATH           : 
ReturnValue      : 0
uValue           : 1
PSComputerName   : 

我们的大约 3 台服务器都出现过这种情况,无法弄清楚为什么或如何只返回一个值。

答案1

没有关于$ip对象来自哪里的信息...如果它的类型是一个数组(或者任何类型的列表,例如Object[]),那么代码片段既不与Get-WmiObjectcmdlet 语法(-ComputerName <String[]>)相矛盾,也不与类GetDWORDValue的方法相矛盾StdRegProv

证明

$HKLM = 2147483650
$ip = @( @{ ipaddress = $env:COMPUTERNAME }, 
         @{ ipaddress = $env:COMPUTERNAME } )
$ip.ipaddress.GetType().Name                   #  Object[]
$reg=Get-WmiObject -List -Namespace root\default -ComputerName $ip.ipaddress | Where-Object {$_.Name -eq "StdRegProv"}
$reg.GetDwordValue( $HKLM,"System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server","enabled").uvalue

输出:

D:\PShell\SF\969516.ps1
Object[]
0
0

相关内容