Функция, перенесенная из Powershell 5 в Powershell 7, завершается с ошибкой "ссылка на объект не установлена ​​на экземпляр объекта" - PullRequest
0 голосов
/ 10 июля 2020

Следующий код работает должным образом в PowerShell 5.1:

function Get-Say([String] $Message, [String] $Voice = "Microsoft Irina Desktop") {
    Add-Type -AssemblyName System.speech
    $speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
    $speak.SelectVoice($Voice)
    $speak.Speak($Message)
}

Однако в PowerShell 7.1.0 (предварительная версия 5) выполнение завершается с ошибкой «ссылка на объект не установлена ​​на экземпляр объекта» и I ' м действительно потеряно. Поиск в Google не очень помогает, поскольку похоже, что с этой ошибкой можно столкнуться в совершенно другом контексте. Итак, эксперты PowerShell, вопрос к вам, как это исправить.

введите описание изображения здесь

Я пытался объявить params внутри body (object reference not set to an instance of an object) в слабой надежде, что может быть какая-то разница в semanti c, но это не помогло.

1 Ответ

1 голос
/ 10 июля 2020

Это известная проблема, связанная с тем, что некоторые необходимые функции отсутствуют в. NET Core, на котором построена PS v7. Похоже, возникла ошибка, но она была закрыта без исправления:

Метод System.Speech.Synthesis.SpeechSynthesizer Speak выдает ссылку на объект, не заданную для экземпляра объекта. "В PowerShell 6.1.2

...