هل يجب أن أقوم بتطبيق واجهة IPropertyCmdletProvider لـ PowerShell Cmdlet؟

StackOverflow https://stackoverflow.com/questions/1539840

  •  20-09-2019
  •  | 
  •  

سؤال

أنا أكتب أ NavigationCmdletProvider لشركة باورشيل.عبر ال تحصل على البند و GetChildItems التجاوزات، هناك أنواع مختلفة من الكائنات التي يتم كتابتها في خط الأنابيب.

المستندات ل IPropertyCmdletProvider تخبرنا الواجهة بما يلي:

يجب على المطورين تنفيذ هذه الواجهة في ظل الشروط التالية:

  • عندما يتعين على المستخدمين استخدام CMDlets مثل CMDLETs Get-Property و Set-Property.
  • بالنسبة لمقدمي الخدمات الذين يستمدون من فئات itemCmdletProvider أو incatererCmdletProvider أو NavigationCmdletProvider.

ارتباك:

ليس هناك الكثير من المعلومات المفيدة في رأيي لأنه كيف يمكن للمستخدم معرفة ما إذا كان يجب هل تستخدم أوامر Get-Property وSet-Property cmdlet؟أتصور أن الأمر متروك لمؤلف أمر Cmdlet.الارتباك الكبير (بالنسبة لي على الأقل) هو ما إذا كان أمر Cmdlet يكتب الكائنات إلى خط الأنابيب؛وهذه الكائنات لها خصائص مكشوفة قابلة للاستدعاء (أياجلس)؛ما هي فوائد استدعاء Get-Property/Set-Property مقارنة بمعالجة الكائن (الكائنات) مباشرةً؟

سؤال:

تحت أي ظروف يجب تنفيذ واجهة IPropertyCmdletProvider؟

أعلم أنني أفتقد شيئًا ما هنا!أي فكرة سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

واو، هذه المستندات قديمة بعض الشيء.لا توجد أوامر cmdlets لـ Get/Set-Property.يجب أن يشير هذا إلى أوامر cmdlets الخاصة بـ Get/Set-ItemProperty.في حالة RegistryProvider، تعتبر أوامر cmdlets هذه ضرورية لأنها الطريقة الوحيدة للوصول إلى قيم التسجيل.وهذا يعني أن أوامر cmdlets الخاصة بـ Get-Item/ChildItem تُرجع فقط كائنات RegistryKey ولا تُرجع أبدًا كائن قيمة التسجيل (وهي غير موجودة في .NET).يجب عليك استخدام Get/Set-ItemProperty للحصول على/تعيين تسجيلات محددة ضمن مفتاح التسجيل.

OTOH يتيح لك موفر FileSystem الوصول مباشرة إلى الحاويات (dirs) والأوراق (الملفات).يمكنك الحصول على محتوى الملف مباشرة.ومع ذلك، يمكنك استخدام Get-ItemProperty إذا كنت تريد الحصول على LastWriteTime للملف:

PS> Get-ItemProperty -Path .\DotNetTypes.format.ps1xml -Name LastWriteTime


PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Win
                dows\System32\WindowsPowerShell\v1.0\DotNetT
                ypes.format.ps1xml
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Win
                dows\System32\WindowsPowerShell\v1.0
PSChildName   : DotNetTypes.format.ps1xml
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
LastWriteTime : 4/24/2009 11:21:46 AM

ومع ذلك، لا يمكنني عادة الوصول إلى هذه الخاصية بهذه الطريقة.أجد أن الإخراج هو وسيلة للإسهاب.اريد ان افعل هذا:

PS> (Get-Item .\DotNetTypes.format.ps1xml).LastWriteTime

Friday, April 24, 2009 11:21:46 AM

بالنسبة للإرشادات، أود أن أقول إنك تحتاج حقًا إلى تنفيذ هذه الواجهة إذا اتبعت نهج RegistryProvider ولكن الأمر أقل أهمية إذا اتبعت المسار الذي سلكه موفر FileSystem لأنه يمكنك بسهولة الوصول إلى خصائص الكائنات التي تم إرجاعها بواسطة Get- العنصر/العنصر الفرعي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top