Назад | Перейти на главную страницу

Несколько значений, возвращаемых с помощью 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, он даст мне этот результат ниже, и я знаю, были ли они дублированы, но не почему.

$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 нашими серверами, и мы не можем понять, почему и как вернуть только одно значение.

Нет информации, где $ip объект исходит из… Если его тип является массивом (или любым списком, например Object[]), то фрагмент кода не противоречит ни Get-WmiObject синтаксис командлета (-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