Я пытаюсь пройтись по массиву JSON желаемых значений реестра, а затем проверить правильность установки значения реестра.
У меня проблема в том, что я неправильно определяю логический тест if .. () в моем цикле. Код проблемы находится в строке: if($protocols[$i][$tempdisabledKVString] -eq "true")
У меня есть следующий объект:
$protocolsJSON = @"
[
{
"Name": "TLS 1.2",
"Server-Enabled": True,
"Client-Enabled": True
}
]
"@
$protocols = $protocolsJSON | ConvertFrom-Json
Что не соответствует приведенному ниже вложенному выражению if
(нежелательное поведение)
elseif ($isDefaultDisabled -eq 0) # Protocol is manually enabled in registry (part 1.A)
{
if($protocols[$i][$tempdisabledKVString] -eq "True") # Protocol should be manually enabled in registry (part 1.B)
{
# For TLS 1.2 to be enabled and negotiated on servers that run Windows Server 2008 R2,
# you MUST create the DisabledByDefault entry in the appropriate subkey (Client, Server)
# and set it to "0". The entry will not be seen in the registry and it is set to "1" by default.
$errorString = "Warning: Protocol is only partially enabled."
$TLSProtocolResult.Errors = $errorString
}
else
{
write-host "DEBUG " $protocols[$i][$tempdisabledKVString]
write-host "DEBUG " $protocols[$i]
write-host "DEBUG " [$tempdisabledKVString]
$errorString = "Error: Protocol should be disabled."
$TLSProtocolResult.Errors = $errorString
}
}
, который производит следующий вывод
DEBUG
DEBUG @{Name=TLS 1.2; Server-Enabled=True; Client-Enabled=True}
DEBUG [Server-Disabled]
DEBUG
DEBUG @{Name=TLS 1.2; Server-Enabled=True; Client-Enabled=True}
DEBUG [Client-Disabled]
Как мне отредактировать оператор IF, чтобы я мог проверить истинное / ложное состояние $protocols[$i][$tempdisabledKVString]
?