Powershell: وحدات FullCLR غير متوافقة مع PSCore6

تم إنشاؤها على ٢١ يونيو ٢٠١٧  ·  61تعليقات  ·  مصدر: PowerShell/PowerShell

مع التغيير إلى CoreCLR 2.0 الذي يتوافق مع .Net Std 2.0 بالإضافة إلى التحديث لتمكين البحث في GAC عن التجميعات ، نحتاج إلى التحقق من أن PSCore6 هو بديل قابل للتطبيق لـ Windows PowerShell 5.x. الرجاء سرد الوحدات التي جربتها والتي لا تعمل هنا. صوّت مع 👍 للوحدات النمطية التي تهتم بها كثيرًا لمساعدتنا في تحديد أولويات كيفية عملنا مع الشركاء لتمكين الدعم أو جعلهم يستهدفون .Net Std 2.0.

حتى يتم حل https://github.com/PowerShell/PowerShell/issues/4056 ، ستحتاج إلى إضافة Windows PowerShell PSModulePath يدويًا لاكتشاف تلك الوحدات:

PS > $env:psmodulepath += ";${env:userprofile}\Documents\WindowsPowerShell\Modules;${env:programfiles}\WindowsPowerShell\Modules;${env:windir}\system32\WindowsPowerShell\v1.0\Modules\"

PSSnapins:

  • الدليل النشط

فشل بسبب نوع الوظيفة الإضافية

  • سطح المكتب البعيد

تعمل الاختبارات الأساسية:

  • هايبر- V
  • الإقلاع الآمن

يحتاج إلى استدار:

  • ODataUtils

لست متأكدا:

  • WindowsUpdate (أتلقى خطأ حول symsrv.dll أيضًا في Windows PowerShell)
Area-Cmdlets Issue-Meta Resolution-External

التعليق الأكثر فائدة

سيتعين علينا التحدث إلى هذا الفريق حول إعادة كتابة أوامر cmdlet الخاصة بهم ...

ال 61 كومينتر

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

تعتمد ConvertFrom-String على تقنية من Microsoft Research والتي لم يتم التخطيط لها حاليًا لتكون مفتوحة المصدر.

أنا أقدر ردود الفعل ، مع ذلك.

Workflow و ConvertFrom-String مستقلان لأسباب مختلفة لعدم وجودهما في خطة PSCore6. أوافق على أن برنامج ConvertFrom-String سيعمل بشكل رائع ضد الأدوات الأصلية القائمة على النص في Linux. ربما يمكننا إنشاء أمر cmdlet جديد بإمكانيات مماثلة ولكنها أبسط مثل ConvertFrom-String.

التحويل من سلسلة ، أو وظيفة مشابهة ، ستكون مفيدة للغاية

لقد تحققت من تحميل وحدة Windows PowerShell على نظام التشغيل Windows 10 الإصدار 16215 مع تثبيت RSAT.
البرنامج النصي والنتائج (بما في ذلك الأخطاء) في الملف المرفق.
4062a.txt
4062b.txt - وحدات القائمة الكاملة من PowerShell Core.

باختصار.
مجموع الوحدات الأساسية = 12.
إجمالي وحدات Windows و Core = 120.
إجمالي وحدات Windows = 108. (في Windows Powershell Get-Module -ListAvailable). العدد = 109)
بعد بدء تشغيل PowerShell Core - يتم تحميل 3 وحدات.
بعد محاولة تحميل جميع الوحدات - تم تحميل 71 وحدة.

لذلك يتم تحميل 59 وحدة من 108 وحدات Windows.
$ error.count = 79

iSazonov شكرا للحصول على هذه النتائج.

  • ستتم معالجة حالات فشل cmdlet المستندة إلى CDXML بمجرد أن ننتقل إلى مركز dotnet الأحدث الذي يحتوي على هذا الإصلاح .
  • تعود غالبية الأخطاء إلى الأسماء المستعارة المتعارضة لـ DSC.
  • وحدة RemoteDesktop تستدعي النوع الإضافي الذي فشل ويجب علينا التحقيق في ذلك
  • سير العمل من المتوقع ألا يعمل
  • من المتوقع ألا يعمل ISE واحد
  • ODataUtils هو أحد الفريق الذي يمتلكه فريقي ويحتاج إلى نقله إلى ccanmenaga

cc @ بوويرشيل / بوويرشيل-جنة

أوه ، وحدة ActiveDirectory هي PSSnapIn 😕 يتم طرح المستهلكين الرئيسيين لـ PowerShell Core (مسؤولي النظام) في الخارج!

سيتعين علينا التحدث إلى هذا الفريق حول إعادة كتابة أوامر cmdlet الخاصة بهم ...

Exchange Server 2013 EMS سحق PowerShell Core. كما أنه لا يمكن العثور على تجميعات الصرف.

لم يتم تحميل الوحدة النمطية SCCM 2012 R2 - تبعيات .Net معطلة ولم يتم العثور على التجميعات في المجلد المحلي (SCCM home).

وحدة Sharepoint 2013 هي PSSnapIn.

على نظامي MacOS و Linux:

Install-Module Docker -Scope CurrentUser -Repository DockerPS-Dev

Get-Container

تعذر تحميل الملف أو التجميع "Docker.DotNet ، الإصدار = 2.124.0.0 ، الثقافة = محايد ، PublicKeyToken = فارغ". لا يمكن للنظام العثور على الملف المحدد.
في السطر: 1 حرف: 1

  • Get-Container
  • ~ ~ ~~~

    • CategoryInfo: توقف العملية: (:) [] ، FileNotFoundException

    • FullyQualifiedErrorId: System.IO.FileNotFoundException

فهل أستنتج بشكل صحيح من التعليقات أعلاه أن ActiveDirectory لا يعمل لأنه PSSnapIn ، وليس وحدة نمطية ، وهذا الإصدار لا يدعم الأدوات الإضافية؟

أيضًا ، بينما يمكنني استيراد الوحدة النمطية -اسم MSOnline ، عندما حاولت Connect-MsolService ، حصلت على "تعذر تحميل النوع" System.Drawing.Drawing2D.InterpolationMode "من التجميع" System.Drawing "، ثم تعطل powerhell.exe.

JakeMoe نعم ، تم إهمال PSSnapIn في PowerShell Core.

System.Drawing ليس في CoreFS و. Net Standard 2.0.

iSazonov هل يمكنك تجربة الثلاثة (Exchange و SharePoint و SCCM) مرة أخرى باستخدام الإصدار التجريبي 4؟ شكرا!

وبفضل الجميع ، استمروا في القدوم!

PS C: \ Program Files \ PowerShell \ 6.0.0-beta.4> وحدة الاستيراد MSOnline
وحدة الاستيراد: تعذر تحميل النوع 'System.Diagnostics.EventLogEntryType' من التجميع 'System ، الإصدار = 4.0.0.0 ،
الثقافة = محايد ، PublicKeyToken = b77a5c561934e089 '.

PS > Start-Process powershell -Credential (Get-Credential)

Windows PowerShell credential request
Enter your credentials.
User: domain\username
Password for user domain\username: **************

Start-Process : Unable to load DLL 'api-ms-win-security-cpwl-l1-1-0.dll': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:1
+ Start-Process powershell -Credential (Get-Credential)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Start-Process], DllNotFoundException
    + FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.StartProcessCommand

تضمين التغريدة

  • التبادل - يعمل أوامر cmdlets البسيطة والمحملة
  • Sharepoint - تعمل أوامر cmdlets البسيطة والمحملة
  • SCCM - NullReferenceException وتحطم:
at System.Management.MTAHelper.IsNoContextMTA()
at System.Management.MTAHelper.CreateInMTA(Type type)
...
  • Skype Server 2015 - تعذر تحميل النوع "System.Management.Automation.PSSnapIn".

لقد تحققت مرة أخرى من تحميل وحدة Windows PowerShell على نظام التشغيل Windows 10 الإصدار 162241 مع تثبيت RSAT.
البرنامج النصي والنتائج (بما في ذلك الأخطاء) في الملف المرفق.

4062Beta4fulllist.txt
4062Beta4ipmoall.txt - وحدات القائمة الكاملة من PowerShell Core.

باختصار.
مجموع الوحدات الأساسية = 12.
إجمالي وحدات Windows و Core = 125.
مجموع وحدات Windows النمطية = 113.
بعد بدء تشغيل PowerShell Core - يتم تحميل وحدتين.
بعد محاولة تحميل جميع الوحدات - تم تحميل 108 وحدة.

لذلك يتم تحميل 96 من 113 وحدة Windows.
$ error.count = 47

فحصت أحد البرامج النصية المخصصة لدي مع Beta 4 لكنها إحباط مع الخطأ:
catch: function : Process: خطأ: استثناء يستدعي ".ctor" مع وسيطة (وسيطات) "0": " تعذر تحميل النوع 'System.Diagnostics.PerformanceCounter ' من التجميع 'System ، الإصدار = 4.0.0.0 ، الثقافة = محايد ، PublicKeyToken = b77a5c561934e089 '. "

افتتح # 4295


حرره @ daxian-dbw:
السبب الأساسي هو أن System.Diagnostics.PerformanceCounter غير متوفر حاليًا في .NET Core . تتعقب dotnet / corefx # 3906 دعم PerformanceCounter في .NET Core ولكن تم تمييزه بعلامة "المستقبل" مما يعني أنه لن يكون متاحًا في .NET Core 2.0 .
الرجاء مراجعة # 4295 لمزيد من المعلومات.

@ mi-hol الرجاء فتح سؤال جديد.

لا يمكن الحصول على Get-WUList للعمل في 6.0 core beta-4 من PSWindowsUpdate الإصدار 1.6.0.3 . يعمل بشكل جيد على Windows 10 Desktop PowerShell.

انتاج:

Get-WUList -MicrosoftUpdate
Test-Connection : The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests. Consult the logs and
documentation for the WS-Management service running on the destination, most commonly IIS or
WinRM. If the destination is the WinRM service, run the following command on the destination to
analyze and configure the WinRM service: "winrm quickconfig".
At C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate\1.6.0.3\Get-WUList.ps1:274 char:7
+             If(Test-Connection -ComputerName $Computer -Quiet)
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Test-Connection], CimException
    + FullyQualifiedErrorId : TestConnectionException,Microsoft.PowerShell.Commands.TestConnection
   Command
$PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.0.0-beta
PSEdition                      Core
GitCommitId                    v6.0.0-beta.4
OS                             Microsoft Windows 10.0.15063
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

fdncred شكرا لتقريرك!
لقد اختبرت PSWindowsUpdate.

  • لديك مشكلة في اختبار الاتصال وإدارة WS. من فضلك لا تناقش هذا في الموضوع - افتح مشكلة-سؤال جديد إذا كنت بحاجة إلى مساعدة.
  • لا يزال بإمكاننا استخدام PSWindowsUpdate لأن # 3775.

لا يعمل كل من WebAdministration و IISAdministration في PS Core لأنهم يتوقعون أن تكون تجميعات GAC'd متاحة. من المحتمل أن يكون استخدام DSC بديلاً أفضل ولكن تطبيق التكوين في النواة أمر محرج بسبب عدم وجود Invoke-DSCResource و Start-DSCConfiguration . انظر # 4457.

أي تحديث بشأن المشكلة ، لا يمكن استيراد وحدة MsOnline على نظام التشغيل Linux . # 4269

لا يعمل Invoke-MySqlQuery من معرض PowerShell. لقد تلقيت خطأ عندما أحاول استخدامه على Beta 5 على Windows 10. كان فهمي لـ .Net Standard أن هناك فرصة أن يعمل هذا على Windows (وليس على Linux / Mac بالطبع). يتم تحميل التجميع ، ما عليك سوى الحصول على خطأ في إحدى أكثر الطرق شيوعًا فيه.
https://www.powershellgallery.com/packages/Invoke-MySqlQuery/1.0.0/DisplayScript

Install-Script -Name Invoke-MySqlQuery

. Invoke-MySqlQuery.ps1
$MyCred = Get-Credential
Invoke-MySQLQuery -ComputerName MyServer -Database mysql -Query "select @@hostname" -Credential $MyCred


Exception calling "Open" with "0" argument(s): "The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception."

لدي أيضًا وحدة داخلية بها نفس المشكلة على Conn.Open (). نستخدم الوحدة الداخلية للاتصال بمئات من خوادم MySql و AWS Aurora أيضًا.

يحدث هذا مع كل من Connector / Net 6.9.9 و Connector / Net 8.0.8 (مثبتة على أجهزة كمبيوتر مختلفة). يعمل في الإصدارات السابقة من PowerShell دون أي مشاكل.

FireInWinter شكرا لتقريرك! الرجاء فتح مشكلة جديدة مع خطوات إعادة إظهار المشكلة.

نحن بحاجة إلى أن نكون قادرين على الأشكال الحالية. من الناحية المثالية ، عبر System.Drawing ، ولكن إذا لزم الأمر ، يمكنني تحويل بعضها إلى XAML. ومع ذلك ، لا العمل ، فهل أي شيء رسومي مع Powershell ميت؟ لن نقتطع أبدًا إلى PowershellCore إذا لم نتمكن من استخدام شكل من الأشكال. ولا ، لن نستخدم C #: P.

أيضًا ، هل من الآمن القول إن Get-WmiObject قد مات؟ أتمنى أن تكون البنية بين Get-WmiObject و Get-CimInstance متطابقة ، لكنها ليست كذلك ، لذا فأنت مجبر على الترميز مرتين إذا كان لا يزال لديك أي PS 2.0 هناك.

agressiv لدينا بعض التحقيقات الجارية من أجل https://github.com/PowerShell/PowerShell/issues/3957 لتمكين واجهات المستخدم الرسومية

Get-WmiObject مهملاً. joeyaiello نشر للتو مدونة حول إهمال PSv2 رسميًا. نوصي منذ بعض الوقت بالتبديل إلى أوامر cmdlets CIM بدلاً من استخدام أوامر WMI cmdlets التي يمكن أن تتداخل مع تطبيقات غير Windows لـ CIM عبر WSMan (OpenPegasus ، OMI ، Dell iDrac ، HP iLO ، إلخ ...).

لا يزال لدينا أجهزة على الإصدار 2.0 لأن Microsoft كانت بطيئة في دعم WMF 4.0 على العديد من المنتجات الأساسية ، وقد انتهى ترحيلنا. سيتعين علينا إجراء مرور آخر لمعرفة من بقي حيث يُطلب منا الآن نشر 5.1 (وهو بالطبع غير متوافق مع كل شيء تقريبًا بما في ذلك خوادم Skype و Exchange)

هل توجد قائمة بأوامر Cmdlets مثل Get-WmiObject والتي ستتم إزالتها والتي يمكننا الرجوع إليها؟

ما هي المنصة المستهدفة لوينب؟ هل سينتقل إلى المركز أيضًا؟ نحن نستخدم نماذج Windows هناك أيضًا.

لقد قمت بتفريغ جميع أوامر cmdlets في الإصدار التجريبي 6.0 وقمت ببساطة بعمل كائن مقارنة. إليكم هؤلاء لنا:

  • كافة أوامر cmdlets لتسجيل الأحداث. نحن نستخدم هذه على نطاق واسع.
  • اختبار-ComputerSecureChannel.
  • إضافة PSSnapin. أود عدم استخدام هذا ، ولكن يبدو أن الكثير من الوحدات بها مؤلفون كسالى. (مثل Vmware و WSUS و MDT و Citrix و SCOM و Dell). ربما توجد طرق أخرى لتحميل بعض هذه الوحدات ، لكن OEMS هم الذين يستخدمون بالفعل Add-PSSnapin في التعليمات البرمجية الخاصة بهم - لذلك إما أننا نقوم بتعديل الكود الخاص بهم ، على أمل أن يعمل ، أو يغيرونه أخيرًا. بالطبع ، ما كان عليهم استخدام Add-PSSnapin منذ 8 سنوات تقريبًا ، لكن بعض الأشياء لا تتغير أبدًا.

agressiv VMware PowerCLI هو الآن وحدة يمكن تثبيتها من معرض PowerShell ، وأنا على يقين من أنهم يدعمون PowerShell Core معها بالفعل (سأحتاج إلى التحقق مرة أخرى من ذلك). هناك متطرفون آخرون من PSSnapin ، كما أشرت.

agressiv لـ PSCore6 ، أزلنا دعم PSSnapins عمدًا. ومع ذلك ، يحتوي برنامج VMWare على منفذ PowerCLI لـ PSCore6 غير موجود حاليًا على PSGallery

aggresiv : على واجهة واجهة المستخدم ، نحن بالتأكيد لا https://github.com/PowerShell/Phosphor ، فيمكنك التحقق من تجربة نجريها لمحاولة إنشاء واجهات مستخدم مستندة إلى الويب (والتي تتجنب الكثير من المشكلات المتعلقة بواجهة المستخدم "الأصلية" المتباينة الأطر ، على الرغم من أن شخصًا ما يريد عمل بعض روابط Qt لـ PowerShell ، فهذا أيضًا يجعلني سعيدًا جدًا).

بالنسبة إلى Get-WmiObject : أنت على حق ، ليس لدينا أي خطط لإعادته. في رأيي ، تحسن Get-CimInstance بشكل كبير في بناء الجملة مثل Get-WmiObject (جزء من سبب صنعه في المقام الأول) ، وبينما أفهم ألم الترميز المزدوج ، نحن أيضًا فقط تم إيقاف تشغيل Windows PowerShell 2.0 ، لذلك لن نقوم بتحسين التوافق مع الإصدار 2.0 من الآن فصاعدًا. : \

حالات الاستخدام الخاصة بي:

  • استيراد وحدة Active Directory PowerShell النمطية.
  • استيراد الوحدة النمطية Azure Active Directory PowerShell.
  • قم بتأسيس جلسة PowerShell عن بُعد لخادم Exchange 2010-2016 واستيراد الجلسة.
  • قم بتأسيس جلسة PowerShell عن بُعد إلى Exchange Online واستيراد الجلسة.
  • قم بتأسيس جلسة PowerShell عن بُعد لخادم Lync / Skype واستيراد الجلسة ،

إذا كان بإمكانك جعل كل هذه الأوامر وأقراص cmdlets الخاصة بهم تعمل ضمن أنظمة التشغيل Windows و Linux و MacOS ، فسيتم إعلانك كأبطال.

أتخيل أن وحدة AD هي الأصعب ، حيث إنها حاليًا جزء من RSAT وأداة إضافية ، كما هو موضح في التعليقات السابقة. ولكن مهلا ، يجب على فريق AD مواكبة العصر!

إذا فشل كل شيء آخر ، فقم بجلسة PowerShell عن بُعد لوحدة تحكم مجال أو كمبيوتر آخر يعمل بنظام Windows يحتوي على هذه الوحدات النمطية ثم قم باستيراد الجلسة.

@ KeeperB5 الاتصال عن بُعد الضمني عن طريق استيراد PSSession يجب أن يعمل فقط مع PSCore6 (Windows على أي حال ، لم يجرب مع Linux / MacOS ، ولكن يجب أن يعمل)

وحدة الاستيراد AzureAD
ربط AzureAD

استثناء غير معالج: System.TypeLoadException: تعذر تحميل النوع 'System.Drawing.Icon' من التجميع 'System.Drawing ، الإصدار = 4.0.0.0 ، الثقافة = محايد ، PublicKeyToken = b03f5f7f11d50a3a'.
في System.Windows.Forms.Form.Dispose (التخلص المنطقي)
في System.ComponentModel.Component.Finalize ()
connect-azuread: حدث خطأ واحد أو أكثر. (تعذر تحميل النوع 'System.Drawing.Drawing2D.InterpolationMode' من التجميع 'System.Drawing ، الإصدار = 4.0.0.0 ، الثقافة = محايد ، PublicKeyToken = b03f5f7f11d50a3a'.): تعذر تحميل النوع 'S
ystem.Drawing.Drawing2D.InterpolationMode 'من التجميع' System.Drawing ، الإصدار = 4.0.0.0 ، الثقافة = محايد ، PublicKeyToken = b03f5f7f11d50a3a '.
في السطر: 1 حرف: 1
ربط azuread
CategoryInfo: خطأ المصادقة: (:) [Connect-AzureAD] ، AadAuthenticationFailedException
FullyQualifiedErrorId: Connect-AzureAD ، Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD

أيضًا ، يتعطل التطبيق بالكامل وتظهر رسالة "توقف powerhell.exe عن العمل"

نقل هذا من 6.0.0 مرحلة رئيسية حيث لا يوجد عمل إضافي مخطط لـ 6.0.0

@ SteveL-MSFT هل يمكنك توضيح ما إذا كان ذلك ممكنًا - ما هي خطة MSFT / الجدول الزمني لاعتماد وحدات من منتجاتها من أجل PowerShell Core 6.0؟

لن تبدأ العديد من فرق المنتجات أي أعمال تحقق حتى نصل إلى الإصدار 6.0.0 النهائي ، لذلك ينصب التركيز على إنجاز ذلك والمشاركة مع فرق المنتج لبدء التحقق من الصحة. لن يحدث هذا بسرعة للأسف ، لذا لا يوجد جدول زمني يمكنني تقديمه في هذا الوقت.

بناءً على هذه المشكلة ، هل هناك خطة لنقل وحدات Active Directory / Exchange النمطية إلى PowerShell v6؟ هل ستكون الأدوات تعمل بنظام Windows فقط (نظرًا لأن System.DirectoryServices.Protocols يعمل حاليًا فقط على نظام التشغيل windows)؟

@ j3vans لا يزال لدى CoreFX واجهة برمجة تطبيقات محدودة للغاية ولا أتوقع أن تتمكن فرق MSFT من نقل هذه الوحدات. يمكننا استخدام وحدات Windows عبر الاتصال عن بُعد.

لا يتم تثبيت Install-Module SqlServer على نظام Mac.

خطوات التكاثر:
تثبيت الوحدة النمطية SqlServer

Errors out with: 
PackageManagement\Install-Package : Unable to load DLL 'api-ms-win-core-sysinfo-l1-1-0.dll': The specified module or one of its dependencies could not be found.                (Exception from HRESULT: 0x8007007E)                                                                                                                                          At /usr/local/microsoft/powershell/6.0.0-rc.2/Modules/PowerShellGet/1.6.0/PSModule.psm1:2057 char:21                                                                           + ...          $null = PackageManagement\Install-Package <strong i="8">@PSBoundParameters</strong>                                                                                                    +                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.TestModuleManifestCommand,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

```powershell
> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.0.0-rc.2
PSEdition                      Core
GitCommitId                    v6.0.0-rc.2
OS                             Darwin 16.7.0 Darwin Kernel Version 16.7.0: Wed Oct  4 00:17:00 PDT 2017; root:xnu-3789.71.6~1/RELEASE_X86_64
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

حول "تثبيت وحدة SQLServer" - هذه الوحدة مخصصة لنظام Windows فقط. لا توجد وحدات Linux / Mac SQLPS ولا وحدات SQLServer (حتى الآن).

الآن ، إذا كنت تريد محاولة إنشاء أوامر SQL Server PowerShell الخاصة بك على أنظمة بخلاف Windows ، فيمكنك تثبيت "Microsoft.SqlServer.SqlManagementObjects" الذي سيتم تشغيله في Linux.

راجع منشور المدونة الخاص بي للحصول على مزيد من المعلومات: http://www.maxtblog.com/2017/11/streamlining-sql-server-management-objects-smo-in-powershell-core/

ستتم معالجة هذه المشكلة من خلال https://github.com/PowerShell/WindowsPowerShellCompatibilityPack ، يرجى فتح المشكلات الخاصة بوحدات معينة هناك

هل هناك أي عمل قيد التقدم للحصول على وحدة Active Directory وظيفية لـ PS 6؟

مرحبًا apetitjean ،

قد ترغب في إرسال السؤال على الرابط @ SteveL-MSFT أعلاه. بهذه الطريقة يمكن تتبعها بشكل صحيح.
:)

نراكم في قمة MVP!

شكرا لك MaximoTrinidad. النشر هنا كان بالضبط نيتي. آمل أن يرى @ SteveL-MSFT سؤالي هنا.

أراك قريبا! :)

apetitjean ، الخطة هي أن تكون قادرًا على دعم وحدة Active Directory عبر حزمة توافق Windows PowerShell. على الأرجح سنستخدم الاتصال عن بُعد الضمني وربما مع JEA.

@ SteveL-MSFT Windows PowerShell Compatibility Pack ستكون Windows فقط ، أليس كذلك؟ لا أعتقد أنه من المقبول أن تعمل وحدة Active Directory على Windows فقط. إذا كانت الخطة هي دعم AD مؤقتًا فقط على Windows حتى يتم إنشاء واجهات برمجة التطبيقات (APIs) الأساسية .NET على x-plat ، فأنا موافق على ذلك. ولكن ، يتم استخدام AD لأكثر من مجرد بيئات Windows والقدرة على بناء الأتمتة في Linux (و macOS) باستخدام PowerShell يجب ألا تتطلب معالجة .NET مباشرة أو الاستدعاء إلى لغات shell / البرمجة النصية الأخرى التي يمكن أن تدعم AD على Linux.

من فهمي ، فإن وحدة Active Directory ليست موجودة في PowerShell
لوحة الفريق ويجب إعادة كتابتها بالكامل للعمل مع PowerShell
جوهر.
أعتقد أن ما يتحدث عنه ستيف هو حل بديل يجب أن يعمل حتى
الإصدار التالي للوحدة الإعلانية.

تحتوي وحدة AD الحالية على متطلبات PSSnapin التي لن تعمل في PS Core على أي حال ، ما لم نضيف بعض PSSnapin shim في حزمة توافق Windows PowerShell التي لست على دراية بها ... الطريقة الوحيدة لوحدة AD ستكون إعادة الكتابة. هذا هو السبب في أنني منزعج من قول @ SteveL-MSFT إن وحدة AD (على الرغم من أنها مسؤولية فريق نظام التشغيل ، وليس فريق PowerShell) ستدعمها حزمة توافق Windows PowerShell. كانت هناك بالفعل حاجة ماسة لإعادة بناء الوحدة النمطية للنواة ، وإذا كان مستقبلها في حزمة توافق Windows PowerShell ، فهذا هو الاتجاه الخاطئ.

أنا مع رأي markekraus . أنا حقًا لا أؤيد استخدام Windows PowerShell Compatibility Pack وأعتقد "... يجب أن تبقيهم منفصلين !!".

لكن هذا رأيي!
:)

كان فهمي لحزمة توافق Windows PowerShell أنها تحتوي على كل ما لن يتم نقله أبدًا.

الغرض من حزمة توافق Windows PowerShell هو مساعدة مستخدمي Windows PowerShell الحاليين مؤقتًا على الانتقال إلى PSCore6. تتمثل الخطة طويلة المدى في تشغيل الوحدات في الأصل على PSCore6 بالإضافة إلى أن تكون عبر النظام الأساسي. قد تقرر بعض الفرق أنها لن تنتقل أبدًا إلى PSCore6 أو أنها ستفعل ذلك ، لكنها لا تستثمر في جعلها متوافقة عبر الأنظمة الأساسية. أكبر مؤثر لمساعدتهم في اتخاذ القرار الصحيح هو ملاحظات العملاء (وليس فريق PowerShell حيث نمثل العميل).

إذا كان لدي نصوص لها تبعيات على .Net framework dlls ، يجب أن أبحث عن نسخة أساسية من تلك التبعيات عبر nuget ثم أحاول نقل البرنامج النصي إلى PS6؟ لا يوجد "غلاف" لهذه التبعيات ، صحيح؟

@ dudeNumber4 ذلك يعتمد. إذا كان تجميعًا يتضمن PSCore6 بالفعل (وقمنا بتضمين الكثير) ، فلن تحتاج إلى إجراء أي تغيير إلا إذا أشرت إلى ملف dll محدد عبر المسار. على سبيل المثال ، إذا كنت تعتمد على System.DirectoryServices.AccountManagement.dll سابقًا باستخدام Add-Type للتحميل ، إذا لم تحدد مسارًا ، فيجب أن يعمل فقط.

@ dudeNumber4 ذلك يعتمد. إذا كان تجميعًا يتضمن PSCore6 بالفعل (وقمنا بتضمين الكثير) ، فلن تحتاج إلى إجراء أي تغيير إلا إذا أشرت إلى ملف dll محدد عبر المسار. على سبيل المثال ، إذا كنت تعتمد على System.DirectoryServices.AccountManagement.dll سابقًا باستخدام Add-Type للتحميل ، إذا لم تحدد مسارًا ، فيجب أن يعمل فقط.

حسنًا ، لقد حاولت للتو New-Object System.Data.OleDb.OleDbConnection . _لا يمكن العثور على type_. في nuget ، أرى نوعًا من المنافذ التي تدعي دعم .Net Standard 2.0. لنقل البرنامج النصي ، يجب علي إضافة استعادة nuget لتلك المكتبة ، أليس كذلك؟

@ dudeNumber4 لا نقوم بتضمين هذا التجميع كجزء من PSCore6 نفسه ، لذلك لاستخدامه ، يجب أن تكون قادرًا على استخدام Install-Package لتنزيل nupkg هذا في وقت التشغيل ، أو القيام بذلك يدويًا وقم فقط بتضمين هذا التجميع مع الخاص بك النصي.

إدارة الويب - هل xWebAdministration هو البديل ، أم سيتم نقل إدارة الويب؟

IanKemp هذه الوحدة مملوكة لفريق IIS لذلك لا أعرف خططهم. ومع ذلك ، في المرة الأخيرة التي نظر فيها فريقي إلى تلك الوحدة ، لم تكن بعض مساحات أسماء .NET Framework الضرورية متوفرة في .Net Core ، لذلك حتى يحدث ذلك لن تعمل إلا إذا أعادوا كتابتها

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات