Значения удаленного реестра. Вернуть строковое значение

Я пытаюсь вернуть значения реестра из определенных ключей. По какой-то причине я не могу получить строковое значение ключа. Я могу получить DWordValue без проблем.

Может ли кто-нибудь сказать мне, почему строковое значение не возвращается?

Код:

function getRegistry(){
    Param (
        [string]$hklm = "2147483650",
        [string]$key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
        [string]$Value2 = "ConnectionCenter"
    )

    $credential = Get-Credential

    $test | ForEach-Object {
        $wmi = Get-WmiObject -List "StdRegProv" -Namespace root\default -ComputerName "compName" -Credential $credential
        #($wmi.GetStringValue($hklm, $key, $value)).sValue

        $wmi.GetStringValue($hklm, $key, $Value2)
    }
}

getRegistry

person Blurr.P    schedule 02.05.2017    source источник
comment
Среди прочего, $test в этом коде имеет значение null. Ваша функция не должна ничего делать, поскольку в цикле нет объектов.   -  person Matt    schedule 02.05.2017
comment
Сценарий работает нормально, когда я возвращаю DWordValue реестра, поэтому я не уверен, что вы имеете в виду, что он не должен ничего делать.   -  person Blurr.P    schedule 02.05.2017
comment
Какой цели служит $test?   -  person Walter Mitty    schedule 02.05.2017
comment
Я исправляюсь. $test является избыточным, но цикл все еще срабатывает. В любом случае вся структура цикла бессмысленна, если только вы не разрешите использование нескольких компьютеров, на что сейчас она не похожа. Я бы рекомендовал переместить учетные данные в параметр, который вы передаете, чтобы вам не приходилось каждый раз вводить новые учетные данные.   -  person Matt    schedule 02.05.2017
comment
Да, я понимаю, что вы говорите. Структура просмотра существует, потому что я буду использовать ее для нескольких компьютеров, когда все будет сказано и сделано.   -  person Blurr.P    schedule 02.05.2017
comment
Вы должны убедиться, что то, что вы здесь разместили, является минимально воспроизводимым примером, иначе мы будем работать так же, как сейчас. . Что именно вы делаете, что не работает? Код в комментариях? Что происходит, почему вы пытаетесь сделать то, что хотите? Выдает ошибку или ничего не происходит?   -  person Matt    schedule 02.05.2017
comment
Нужно ли для этого использовать WMI? Все это становится намного проще, если вместо этого вы можете просто использовать удаленный сеанс.   -  person TheMadTechnician    schedule 02.05.2017
comment
Я не могу повторить. После получения объекта $wmi я могу запустить следующее, чтобы увидеть все свойства и их значения: $wmi.EnumValues($hklm,$key).sNames|%{"{0} - {1}" -f $_,$wmi.GetStringValue($hklm,$key,$_).sValue}   -  person TheMadTechnician    schedule 02.05.2017
comment
Я бы предпочел не идти по маршруту wmi, но, к сожалению, удаленный powershell отключен. Я попробую это @TheMadTechnician, спасибо.   -  person Blurr.P    schedule 02.05.2017
comment
Ни WinRM, ни WMI не требуются, только удаленный доступ к реестру.   -  person Ansgar Wiechers    schedule 02.05.2017