อาการ
หลังจากที่คุณติดตั้งการอัปเดตความปลอดภัยเดือนเมษายน 2021 (หรือการอัปเดตที่ใหม่กว่า) สําหรับMicrosoft Exchange Server 2019, 2016 หรือ 2013 แอปพลิเคชันจะเริ่มส่งคืนหนึ่งในข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อความ 1
Runspace ไม่สนับสนุนไวยากรณ์นี้ ปัญหานี้อาจเกิดขึ้นได้หาก runspace อยู่ในโหมดไม่มีภาษา
ข้อความ 2
มีข้อยกเว้นเกิดขึ้น System.Management.Automation.RemoteException: ไวยากรณ์ไม่ได้รับการสนับสนุนโดย runspace นี้ ปัญหานี้อาจเกิดขึ้นได้หาก runspace อยู่ในโหมดไม่มีภาษา ที่ System.Management.Automation.Runspaces.AsyncResult.EndInvoke() ที่ System.Management.Automation.PowerShell.CoreInvokeRemoteHelper[TInput,TOutput](PSDataCollection'1 input, PSDataCollection'1 output,
ในสถานการณ์นี้ แอปพลิเคชันจะไม่เรียกข้อมูลผ่าน PowerShell ระยะไกลจากเซิร์ฟเวอร์ที่กําลังเรียกใช้Exchange Server ในบางกรณี แอปพลิเคชันหยุดการตอบสนอง
สาเหตุ
จุดสิ้นสุดExchange Management Consoleบนเซิร์ฟเวอร์ที่ใช้ Exchange ถูกเปลี่ยนจากโหมด FullLanguage เป็นโหมด NoLanguage แอปพลิเคชันที่ใช้ฟีเจอร์โหมด FullLanguage ของ PowerShell ระยะไกลพบข้อผิดพลาดที่อธิบายไว้ในส่วน "อาการ" เมื่อประมวลผลการเรียก PowerShell ระยะไกล
การแก้ไขปัญหา
เมื่อต้องการแก้ไขปัญหานี้ นักพัฒนาแอปพลิเคชันต้องอัปเดตแอปพลิเคชันให้ทํางานกับสถานะใหม่ที่เข้มงวดมากขึ้นของ Exchange Shell
นอกจากนี้ เราขอแนะนําให้คุณใช้หนึ่งในวิธีแก้ไขปัญหาต่อไปนี้:
-
ตรวจสอบให้แน่ใจว่าการโทรทั้งหมดที่ใช้ .invoke() กําลังใช้ .AddCommand() และไม่ใช่ .AddScript() สําหรับข้อมูลเพิ่มเติม ให้ตรวจสอบคําแนะนําจาก about_Language_Modes - PowerShell | เอกสาร Microsoft
-
ใช้เซสชันที่นําเข้าแทนการใช้ .invoke() สําหรับข้อมูลเพิ่มเติม ให้ดู David-Barrett-MS/ExchangePowerShellAutomationSample บน GitHub เว็บเพจนี้มีแอปพลิเคชันตัวอย่างที่สาธิตวิธีการเชื่อมต่อกับ Exchange Remote PowerShell และเรียกใช้ cmdlets โดยทางโปรแกรม
ข้อมูลเพิ่มเติม
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการอัปเดตความปลอดภัยเดือนเมษายน 2021 ให้ดูบทความบล็อกทีม Exchange ต่อไปนี้: