Kode berikut berfungsi seperti yang diharapkan di 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)
}

Namun di PowerShell 7.1.0 (pratinjau 5) eksekusi gagal dengan "referensi objek tidak disetel ke instance objek" dan saya benar-benar tersesat. Googling tidak banyak membantu karena sepertinya kesalahan ini dapat ditemukan dalam konteks yang sangat berbeda. Jadi, para ahli PowerShell, sebuah pertanyaan untuk Anda, bagaimana saya bisa memperbaikinya.

enter image description here

Saya sudah mencoba mendeklarasikan params di dalam body (object reference not set to an instance of an object) dengan harapan samar bahwa mungkin ada beberapa perbedaan semantik tetapi itu tidak membantu.

0
shabunc 10 Juli 2020, 16:35

1 menjawab

Jawaban Terbaik

Ini adalah masalah yang diketahui dan disebabkan oleh fakta bahwa beberapa fungsi yang diperlukan tidak ada di .NET Core, tempat PS v7 dibangun. Sepertinya bug telah muncul tetapi ditutup tanpa perbaikan:

System.Speech.Synthesis.SpeechSynthesizer Metode Speak melempar referensi Objek yang tidak disetel ke instance objek." di PowerShell 6.1.2

1
boxdog 10 Juli 2020, 13:47