ذات صلة: # 5122
Write-Output -NoEnumerate
، عند إعطائه مجموعة ، يقوم دائمًا بإرجاع PSObject[]
بدلاً من مصفوفة object[]]
، وهو أمر غير متوقع.
بالإضافة إلى ذلك ، هذا يعني أنه إذا تم تمرير نوع مجموعة مختلف مثل [System.Collections.ArrayList]
، فلن يتم الاحتفاظ به.
Write-Output
، التي تنص حاليًا فقط ، "تمنع مخرجات الكتابة من تعداد المخرجات" ، والتي تبدو مثل مجموعة الإدخال - مهما كان نوعها - يتم تجاوزها ببساطة - توقع معقول بأن _Windows PowerShell_ إصدارات تصل إلى v5.1 شرف بالفعل.أظن أن هذا الانحدار هو نتيجة للعلاقات العامة المشؤومة # 2038 التي نشأت عن القضية رقم 2035.
(Write-Output -NoEnumerate 1, 2).GetType().Name
(Write-Output -NoEnumerate ([System.Collections.ArrayList] (1, 2))).GetType().Name
Object[]
ArrayList
هذه هي الطريقة التي لا تزال تعمل في _Windows PowerShell_ v5.1
PSObject[]
PSObject[]
كما ذكر ، يؤثر هذا على PS _Core_ فقط.
PowerShell Core v6.0.0 on macOS 10.13.2
PowerShell Core v6.0.0 on Ubuntu 16.04.3 LTS
PowerShell Core v6.0.0 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
إذا كان الانحدار - فهو خطأ.
كيف سمح لهذا أن يستمر كل هذا الوقت؟
Jaykul إصلاح هذا الآن. بعد فترة أطول من اللازم في ملفات خطوط الأنابيب ، اتضح أن كتابة المعلمات على أنها PSObject[]
تجبر PS على تعداد أي مجموعة ترميها عليها أثناء مرحلة ربط المعلمة. كتابة المعلمة كـ PSObject
تعمل مع كل من الفرديين والمجموعات على ما يرام.
التعليق الأكثر فائدة
كيف سمح لهذا أن يستمر كل هذا الوقت؟