كيفية إصلاح "لا يمكن لعميل WinRM معالجة الطلب. يجب ألا يحتوي URI الموارد لعملية فرز مع مرشح WQL على مفاتيح ويجب أن يكون اسم الفئة '*' (نجمة)".
وفقًا لمعيار WS-Management الذي نفذته WinRM ، عندما تقوم بإجراء إحصاء باستخدام فلتر استفسار WQL ، يجب أن يستهدف URI الموارد إطار الفئة الأساسية بشكل واسع بدلاً من مثال محدد أو اسم فئة محدد مع مفاتيح محددة. يتطلب WinRM بشكل صارم أنه لعمليات فلتر WQL ، يجب أن يستخدم URI الموارد نجمة ( * إذا كان البرنامج النصي أو الأوامر أو البرمجيات الإدارية الخاصة بك تقوم بإنشاء URI التي تسمي بشكل صريح فئة أو تحدد منتخبات الحالة أثناء تمرير WQL في نفس الوقت __Filter ، عميل WinRM يمنع الطلب ويرمي هذا الخطأ.
إصلاحات خطوة بخطوة
اعتماداً على ما إذا كنت تقوم بتشغيل أمر يدوي عبر winrm ، تنفيذ كومدليت باورشل، أو كتابة البرنامج النصي المخصص، استخدام أحد الحلول التالية لحل المشكلة.
إصلاح 1: تصحيح تركيبة الأوامر في winrm المنفعة
إذا كنت تستخدم أداة سطر الأوامر winrm.cmd لتحديد الموارد، تأكد من -filter يتم إقران المفتاح مع URI الموارد التي تنتهي بنجمة ( * ) ولا تحتوي على أي مفاتيح.
- افتح Command Prompt أو PowerShell كمدير
- راجع أمرك الأصلي، ربما يبدو غير صحيح هكذا:
winrm enumerate wmicimv2/Win32_Service?Name=wuauserv -filter:"Select * from Win32_Service Where State='Running'" - تغيير جزء URI الموارد لاستخدام النجمة (
*) و إزالة خيار المفتاح (?Name=wuauservقم بتعديل الأمر لتتناسب مع هذا الهيكل:winrm enumerate wmicimv2/* -filter:"Select * from Win32_Service Where State='Running'" - اضغط Enter لتشغيل الأمر المصحح
إصلاح 2: تعديل Cmdlets باستخدام PowerShell ( Get-WSManInstance / Enumerate)
إذا كنت تستخدم PowerShell WSMan cmdlets الأصلية، يجب عليك التأكد من -ResourceURI تشير المعلمة إلى بطاقة النمط الفريد بدلاً من فئة CIM محددة أو مفتاح مثيل.
- افتح PowerShell.
- إذا كانت شفرة الفشل تبدو هكذا:
Get-WSManInstance -ResourceURI "wmicimv2/Win32_Process" -Filter "Select * From Win32_Process Where Name='notepad.exe'" - تحديث
-ResourceURIالحجة للنهاية/*حتى يتمكن محرك WQL من معالجة تصفية الفئات داخلياً:Get-WSManInstance -ResourceURI "wmicimv2/*" -Filter "Select * From Win32_Process Where Name='notepad.exe'" - قم بتنفيذ النص المحدث
إصلاح 3: استخدام Cmdlets البديل PowerShell (الموصى به)
إذا كان هدفك هو ببساطة استفسار بيانات WMI / CIM عن بعد عبر بروتوكول WinRM ، فمن الأسهل بكثير وأقل عرضة للخطأ استخدام CIM cmdlets بدلاً من أوامر بلوك WSMan الخام. تتعامل CIM cmdlets تلقائيًا مع تنسيق URI وراء الكواليس.
- افتح PowerShell.
- استبدل أمر إحصاء WSMan المعقد بـ
Get-CimInstancecmdlet، الذي يعمل على WinRM افتراضيًا:Get-CimInstance -ClassName Win32_Service -Filter "State='Running'" -ComputerName "RemoteComputerName" - إذا كنت بحاجة صريحة لاستخدام استفسار WQL كامل، استخدم
-Queryالمعلم بدلاً من ذلك:Get-CimInstance -Query "Select * from Win32_Service where State='Running'" -ComputerName "RemoteComputerName" - قم بتشغيل الأمر للحصول على البيانات دون تشغيل قيود نحوية WinRM.
قد يكون هناك بعض الأخطاء. Learn Microsoft