Powershell: Modul FullCLR tidak kompatibel dengan PSCore6

Dibuat pada 21 Jun 2017  ·  61Komentar  ·  Sumber: PowerShell/PowerShell

Dengan perubahan ke CoreCLR 2.0 yang sesuai dengan .Net Std 2.0 serta pembaruan untuk mengaktifkan pencarian GAC untuk rakitan, kami memerlukan validasi bahwa PSCore6 adalah pengganti yang layak untuk Windows PowerShell 5.x. Harap cantumkan modul yang telah Anda coba yang tidak berfungsi di sini. Pilih dengan 👍 untuk modul mana yang paling Anda pedulikan untuk membantu kami memprioritaskan cara kami bekerja dengan mitra untuk mengaktifkan dukungan atau membuat mereka port untuk menargetkan .Net Std 2.0.

Hingga https://github.com/PowerShell/PowerShell/issues/4056 teratasi, Anda harus menambahkan Windows PowerShell PSModulePath secara manual untuk menemukan modul-modul tersebut:

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

PSSnapin:

  • Direktori Aktif

Gagal karena Add-Type

  • Desktop Jarak Jauh

Tes dasar berfungsi:

  • Hyper-V
  • Boot Aman

Perlu di-porting:

  • ODataUtils

Tidak yakin:

  • WindowsUpdate (Saya mendapatkan kesalahan tentang symsrv.dll juga di Windows PowerShell)
Area-Cmdlets Issue-Meta Resolution-External

Komentar yang paling membantu

Kita harus berbicara dengan tim itu tentang menulis ulang cmdlet mereka...

Semua 61 komentar

Alur kerja bukanlah sesuatu yang kami rencanakan untuk didukung. Alih-alih, kami berkomitmen untuk meningkatkan pengalaman eksekusi konkurensi/paralel dalam skrip PowerShell yang kami yakini sebagai alasan utama orang menggunakan Alur Kerja. Jika ada alasan lain, beri tahu saya.

ConvertFrom-String mengandalkan teknologi dari Microsoft Research yang saat ini belum direncanakan menjadi Open Source.

Saya menghargai umpan balik, meskipun.

Alur kerja dan ConvertFrom-String independen dengan alasan berbeda mengapa mereka tidak ada di PSCore6. Saya setuju bahwa ConvertFrom-String akan bekerja dengan baik terhadap utilitas asli berbasis teks yang ada di Linux. Mungkin kita dapat membuat cmdlet baru dengan kemampuan serupa, tetapi lebih sederhana seperti ConvertFrom-String.

ConvertFrom-string, atau fungsi serupa, akan sangat berguna

Saya memeriksa beban modul Windows PowerShell pada Windows 10 ver 16215 dengan RSAT diinstal.
Skrip dan hasil (termasuk kesalahan) dalam file terlampir.
4062a.txt
4062b.txt - modul daftar lengkap dari PowerShell Core.

Pendeknya.
Jumlah modul Inti = 12.
Total modul Windows dan Core = 120.
Total modul Windows = 108. ( Di Windows Powershell Get-Module -ListAvailable).count = 109 )
Setelah PowerShell Core mulai - 3 modul dimuat.
Setelah mencoba memuat semua modul - 71 modul dimuat.

Jadi 59 dari 108 modul Windows dimuat.
$error.count = 79

@iSazonov terima kasih telah mendapatkan hasil itu.

  • Kegagalan cmdlet berbasis CDXML akan diatasi setelah kami pindah ke inti dotnet baru yang memiliki perbaikan ini.
  • Sebagian besar kesalahan disebabkan oleh alias yang saling bertentangan untuk DSC.
  • Modul RemoteDesktop memanggil Add-Type yang gagal dan kita harus menyelidikinya
  • Alur kerja satu diharapkan tidak berfungsi
  • ISE satu diharapkan tidak berfungsi
  • ODataUtils adalah salah satu milik tim saya yang perlu di-porting cc @anmenaga

cc @PowerShell/powershell-committee

Oh, modul ActiveDirectory adalah PSSnapIn Konsumen utama PowerShell Core (administrator sistem) dibuang ke laut!

Kita harus berbicara dengan tim itu tentang menulis ulang cmdlet mereka...

Exchange Server 2013 EMS menghancurkan PowerShell Core. Juga tidak dapat menemukan majelis Exchange.

Modul SCCM 2012 R2 tidak dimuat - ketergantungan .Net rusak dan rakitan tidak ditemukan di folder lokal (rumah SCCM).

Modul Sharepoint 2013 adalah PSSnapIn.

Di MacOS dan Linux:

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

Get-Container

Tidak dapat memuat file atau rakitan 'Docker.DotNet, Version=2.124.0.0, Culture=neutral, PublicKeyToken=null'. Sistem tidak dapat menemukan berkas yang dicari.
Pada baris: 1 karakter: 1

  • Dapatkan-Kontainer
  • ~ ~ ~~~

    • CategoryInfo : OperationStopped: (:) [], FileNotFoundException

    • FullyQualifiedErrorId : System.IO.FileNotFoundException

Jadi, apakah saya menyimpulkan dengan benar dari komentar di atas bahwa ActiveDirectory tidak berfungsi karena ini adalah PSSnapIn, bukan Modul, dan versi ini tidak mendukung snapin?

Juga, sementara saya bisa Impor-Modul -Nama MSOnline, ketika saya mencoba Connect-MsolService, saya mendapat "Tidak dapat memuat jenis 'System.Drawing.Drawing2D.InterpolationMode' dari perakitan 'System.Drawing', kemudian powershell.exe macet.

@JakeMoe Ya, PSSnapIn tidak digunakan lagi di PowerShell Core.

System.Drawing tidak ada di CoreFS dan .Net Standard 2.0.

@iSazonov bisakah Anda mencoba ketiganya (Exchange, SharePoint, dan SCCM) lagi dengan beta.4? Terima kasih!

Dan terima kasih untuk semua orang, teruskan mereka datang!

PS C:\Program Files\PowerShell\6.0.0-beta.4> Impor-Modul MSOnline
Import-Module : Tidak dapat memuat tipe 'System.Diagnostics.EventLogEntryType' dari perakitan 'System, Version=4.0.0.0,
Budaya=netral, 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

@joeyaiello

  • Exchange - dimuat, cmdlet sederhana berfungsi
  • Sharepoint - dimuat, cmdlet sederhana berfungsi
  • SCCM - NullReferenceException dan crash:
at System.Management.MTAHelper.IsNoContextMTA()
at System.Management.MTAHelper.CreateInMTA(Type type)
...
  • Skype Server 2015 - Tidak dapat memuat jenis 'System.Management.Automation.PSSnapIn'.

Saya kembali memeriksa beban modul Windows PowerShell pada Windows 10 ver 162241 dengan RSAT diinstal.
Skrip dan hasil (termasuk kesalahan) dalam file terlampir.

4062Beta4fulllist.txt
4062Beta4ipmoall.txt - modul daftar lengkap dari PowerShell Core.

Pendeknya.
Jumlah modul Inti = 12.
Total modul Windows dan Core = 125.
Jumlah modul Windows = 113.
Setelah PowerShell Core mulai - 2 modul dimuat.
Setelah mencoba memuat semua modul - 108 modul dimuat.

Jadi 96 dari 113 modul Windows dimuat.
$error.count = 47

memeriksa salah satu skrip khusus saya dengan Beta 4 tetapi dibatalkan dengan kesalahan:
catch:function : Proses: Error:Exception memanggil ".ctor" dengan argumen "0": " Tidak dapat memuat tipe 'System.Diagnostics.PerformanceCounter ' dari Majelis 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'."

dibuka #4295


Diedit oleh @daxian-dbw:
Akar penyebabnya adalah System.Diagnostics.PerformanceCounter saat ini tidak tersedia di .NET Core . dotnet/corefx#3906 melacak dukungan PerformanceCounter di .NET Core tetapi ditandai dengan pencapaian 'Masa Depan' yang berarti tidak akan tersedia di .NET Core 2.0 .
Silakan lihat #4295 untuk informasi lebih lanjut.

@mi-hol Silakan buka Isu-Pertanyaan baru.

Get-WUList tidak dapat bekerja di 6.0 core beta-4 dari PSWindowsUpdate versi 1.6.0.3 . Ini berfungsi dengan baik di Windows 10 Desktop PowerShell.

Keluaran:

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 Terima kasih atas laporan Anda!
Saya menguji PSWindowsUpdate.

  • Anda memiliki masalah dengan Test-Connection dan WS-Management. Tolong jangan bahas ini di topik - buka Pertanyaan-Isu baru jika Anda butuh bantuan.
  • Kami masih tidak dapat menggunakan PSWindowsUpdate karena #3775 .

WebAdministration dan IISAdministration tidak berjalan di PS Core karena mereka mengharapkan rakitan GAC tersedia. Menggunakan DSC kemungkinan merupakan alternatif yang lebih baik tetapi menerapkan konfigurasi di inti canggung karena kurangnya Invoke-DSCResource dan Start-DSCConfiguration . lihat #4457.

Setiap pembaruan pada masalah, Tidak dapat mengimpor modul MsOnline di OS berbasis Linux . #4269

Invoke-MySqlQuery dari Galeri PowerShell tidak berfungsi. Saya mendapatkan kesalahan ketika saya mencoba menggunakannya pada Beta 5 di Windows 10. Pemahaman saya tentang .Net Standard adalah bahwa ada kemungkinan ini akan berfungsi di Windows (bukan di Linux/Mac tentu saja). Majelis memang dimuat, hanya mendapatkan kesalahan pada salah satu metode paling umum di dalamnya.
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."

Saya juga memiliki modul internal yang memiliki masalah yang sama pada Conn.Open(). Kami menggunakan modul internal untuk terhubung ke 100-an server MySql dan juga ke AWS Aurora.

Ini terjadi dengan Connector/Net 6.9.9 dan Connector/Net 8.0.8 (diinstal pada komputer yang berbeda). Ini berfungsi di PowerShell versi sebelumnya tanpa masalah.

@FireInWinter Terima kasih atas laporan Anda! Silakan buka Masalah baru dengan langkah-langkah untuk mereproduksi masalah.

Kita harus mampu menyajikan bentuk. Idealnya, melalui System.Drawing, tetapi jika perlu, saya dapat mengonversi beberapa ke XAML. Namun, keduanya tidak berfungsi, jadi apakah ada sesuatu yang grafis dengan Powershell mati? Kami tidak akan pernah beralih ke PowershellCore jika kami tidak dapat menggunakan semacam formulir. Dan tidak, kami tidak akan menggunakan C# :P

Juga, apakah aman untuk mengatakan Get-WmiObject sudah mati? Saya berharap sintaks antara Get-WmiObject dan Get-CimInstance identik, tetapi sebenarnya tidak, jadi Anda terpaksa membuat kode dua kali jika Anda masih memiliki PS 2.0 di luar sana.

@agressiv kami memiliki beberapa penyelidikan yang sedang berlangsung untuk https://github.com/PowerShell/PowerShell/issues/3957 untuk mengaktifkan GUI

Get-WmiObject dianggap usang. @joeyaiello baru saja memposting blog tentang kami yang secara resmi menghentikan PSv2 . Kami telah merekomendasikan untuk beberapa waktu untuk beralih ke cmdlet CIM daripada menggunakan cmdlet WMI yang dapat melakukan interop dengan implementasi CIM non-Windows melalui WSMan (OpenPegasus, OMI, Dell iDrac, HP iLO, dll ...).

Kami masih memiliki mesin pada 2.0 karena Microsoft lambat dalam mendukung WMF 4.0 pada banyak produk inti, dan migrasi kami telah berakhir. Kami harus membuat pass lain untuk melihat siapa yang tersisa karena kami sekarang diminta untuk menerapkan 5.1 (yang tentu saja, tidak kompatibel dengan hampir semua hal termasuk Skype dan Exchange Server)

Apakah ada daftar Cmdlet seperti Get-WmiObject yang akan dihapus yang bisa kita rujuk?

Apa platform target untuk WinPE? Apakah akan pindah ke inti juga? Kami juga menggunakan Formulir Windows di sana.

Saya melakukan dump semua cmdlet di 6.0 beta dan hanya melakukan objek perbandingan. inilah yang untuk kita:

  • Semua cmdlet EventLog. Kami menggunakan ini secara ekstensif.
  • Uji-KomputerSecureChannel.
  • Tambahkan-PSSnapin. Saya ingin tidak menggunakan ini, tetapi ternyata banyak modul memiliki penulis yang malas. (misalnya Vmware, WSUS, MDT, Citrix, SCOM, Dell). Mungkin ada cara lain untuk memuat beberapa modul ini, tetapi OEM ini adalah yang benar-benar menggunakan Add-PSSnapin dalam kode mereka - jadi kami memodifikasi kode mereka, berharap itu berfungsi, atau mereka akhirnya mengubahnya. Tentu saja, mereka seharusnya tidak menggunakan Add-PSSnapin selama 8 tahun sekarang, tetapi beberapa hal tidak pernah berubah.

@agressiv VMware PowerCLI sekarang menjadi modul yang dapat diinstal dari Galeri PowerShell, dan saya hampir yakin mereka sudah mendukung PowerShell Core dengannya (saya perlu memeriksanya kembali). Ada PSSnapin lain yang tersesat di luar sana, seperti yang Anda tunjukkan.

@agressiv untuk PSCore6, kami sengaja menghapus dukungan untuk PSSnapin. Namun, VMWare memiliki port PowerCLI untuk PSCore6 yang saat ini tidak ada di PSGallery

@aggresiv : Di bagian depan UI, kami jelas tidak mengabaikan upaya GUI sama sekali, kami hanya belum yakin ke mana tujuan kami. Jika Anda membuka https://github.com/PowerShell/Phosphor , Anda dapat melihat eksperimen yang kami jalankan untuk mencoba dan menghasilkan UI berbasis web (yang menghindari banyak masalah seputar UI "asli" yang berbeda kerangka kerja, meskipun jika seseorang ingin membuat beberapa ikatan Qt untuk PowerShell, itu juga akan membuat saya sangat senang).

Adapun Get-WmiObject : Anda benar, kami tidak memiliki rencana untuk mengembalikannya. Menurut pendapat saya, Get-CimInstance sangat meningkat pada sintaks sebagai Get-WmiObject (sebagian dari alasan itu dibuat di tempat pertama), dan sementara saya memahami rasa sakit dari pengkodean ganda, kami juga hanya usang Windows PowerShell 2.0 , jadi kami tidak akan mengoptimalkan kompatibilitas kembali ke 2.0 ke depan. :\

Kasus penggunaan saya:

  • Impor modul PowerShell Direktori Aktif.
  • Impor modul Azure Active Directory PowerShell.
  • Buat sesi PowerShell jarak jauh ke server Exchange 2010 - 2016 dan impor sesi.
  • Buat sesi PowerShell jarak jauh ke Exchange Online dan impor sesi.
  • Buat sesi PowerShell jarak jauh ke server Lync/Skype dan impor sesi,

Jika Anda dapat membuat semua itu dan cmdletnya berfungsi di Windows, Linux, dan MacOS, Anda akan digembar-gemborkan sebagai pahlawan.

Saya membayangkan modul AD menjadi yang terberat, karena saat ini merupakan bagian dari RSAT dan snap-in, seperti yang dijelaskan dalam komentar sebelumnya. Tapi hei, tim AD harus mengikuti perkembangan zaman!

Jika semuanya gagal, maka jauhkan sesi PowerShell ke pengontrol domain atau komputer Windows lain yang memiliki modul ini dan kemudian impor sesi.

@KeeperB5 implisit remoting dengan mengimpor PSSession seharusnya hanya bekerja dengan PSCore6 (Lagi pula Windows, belum mencoba dengan Linux/MacOS, tetapi seharusnya berfungsi)

Impor-Modul AzureAD
Hubungkan-AzureAD

Pengecualian Tidak Tertangani: System.TypeLoadException: Tidak dapat memuat jenis 'System.Drawing.Icon' dari rakitan 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
di System.Windows.Forms.Form.Dispose(Pembuangan Boolean)
di System.ComponentModel.Component.Finalize()
connect-azuread : Satu atau lebih kesalahan terjadi. (Tidak dapat memuat tipe 'System.Drawing.Drawing2D.InterpolationMode' dari perakitan 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.): Tidak dapat memuat tipe 'S
ystem.Drawing.Drawing2D.InterpolationMode' dari perakitan 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Pada baris: 1 karakter: 1
connect-azuread
CategoryInfo : AuthenticationError: (:) [Connect-AzureAD], AadAuthenticationFailedException
FullyQualifiedErrorId : Connect-AzureAD,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD

Juga, seluruh aplikasi macet dengan pesan "powershell.exe telah berhenti bekerja"

Memindahkan ini dari tonggak 6.0.0 karena tidak ada pekerjaan tambahan yang direncanakan untuk 6.0.0

@SteveL-MSFT Bisakah Anda mengklarifikasi jika mungkin - apa rencana/waktu MSFT untuk mengadopsi modul produk mereka untuk PowerShell Core 6.0?

Banyak tim produk tidak akan memulai pekerjaan validasi apa pun hingga kami mencapai rilis final 6.0.0, jadi fokusnya adalah menyelesaikannya dan terlibat dengan tim produk untuk memulai validasi. Sayangnya, ini tidak akan terjadi dengan cepat sehingga tidak ada garis waktu yang dapat saya berikan saat ini.

Berdasarkan masalah ini , apakah ada rencana untuk mem-port modul Active Directory/Exchange ke PowerShell v6? Apakah alat hanya untuk Windows (karena System.DirectoryServices.Protocols saat ini hanya berjalan di windows)?

@j3vans CoreFX masih memiliki API yang sangat terbatas dan saya tidak berharap tim MSFT dapat mem-porting modul-modul ini. Kita dapat menggunakan modul Windows melalui remote.

Instal-Modul SqlServer tidak diinstal di Mac.

```Langkah-langkah untuk Mereproduksi:
Instal-Modul 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

Tentang "Instal-Modul SQLServer" - Modul ini dimaksudkan untuk sistem Windows saja. Tidak ada modul Linux/Mac SQLPS atau SQLServer (belum).

Sekarang, jika Anda ingin mencoba membuat perintah SQL Server PowerShell Anda sendiri pada sistem non-Windows, Anda dapat menginstal "Microsoft.SqlServer.SqlManagementObjects" yang akan berjalan di Linux.

Lihat posting blog saya untuk informasi lebih lanjut: http://www.maxtblog.com/2017/11/streamlining-sql-server-management-objects-smo-in-powershell-core/

masalah ini akan diatasi oleh https://github.com/PowerShell/WindowsPowerShellCompatibilityPack silakan buka masalah untuk modul tertentu di sana

Apakah ada pekerjaan yang sedang berjalan untuk memiliki modul Active Directory yang berfungsi untuk PS 6?

Hai @apetitjean ,

Anda mungkin ingin memposting pertanyaan di tautan @SteveL-MSFT di atas. Dengan begitu, bisa terlacak dengan baik.
:)

Sampai jumpa di KTT MVP!

Terima kasih @MaximoTrinidad. Posting di sini adalah niat saya. Saya harap @SteveL-MSFT akan melihat pertanyaan saya di sini.

Memang melihat Anda segera! :)

@apetitjean rencananya adalah untuk dapat mendukung modul Active Directory melalui Paket Kompatibilitas Windows PowerShell. Kemungkinan besar kita akan menggunakan remote implisit dan mungkin dengan JEA.

@SteveL-MSFT Windows PowerShell Compatibility Pack hanya akan menjadi windows, benar? Saya tidak berpikir itu dapat diterima untuk modul Active Directory untuk bekerja hanya pada Windows. Jika rencananya adalah untuk sementara mendukung dukungan AD hanya pada Windows sampai .NET Core API yang diperlukan dibuat x-plat, maka saya setuju dengan itu. Namun, AD digunakan untuk lebih dari sekadar lingkungan Windows dan kemampuan untuk membangun otomatisasi di Linux (dan macOS) menggunakan PowerShell seharusnya tidak memerlukan manipulasi .NET langsung atau memanggil bahasa shell/scripting lain yang dapat mendukung AD di Linux.

Dari pemahaman saya, modul Active Directory tidak ada di PowerShell
Piring tim dan itu harus sepenuhnya ditulis ulang untuk bekerja dengan PowerShell
Inti.
Saya pikir apa yang Steve bicarakan adalah solusi yang harus bekerja sampai
rilis modul AD berikutnya.

Modul AD saat ini memiliki persyaratan PSSnapin yang tidak akan berfungsi di PS Core, kecuali jika kami menambahkan beberapa shim PSSnapin di Paket Kompatibilitas Windows PowerShell yang saya tidak tahu ... satu-satunya cara untuk modul AD adalah menulis ulang. Inilah mengapa saya terganggu @SteveL-MSFT mengatakan modul AD (meskipun itu adalah tanggung jawab tim OS, dan bukan Tim PowerShell) akan didukung oleh Paket Kompatibilitas Windows PowerShell. Sudah ada kebutuhan kritis untuk memfaktorkan ulang modul untuk inti, dan jika masa depannya ada dalam Paket Kompatibilitas Windows PowerShell, maka itu adalah arah yang salah.

Saya dengan pendapat @markekraus . Saya benar-benar tidak suka menggunakan Paket Kompatibilitas Windows PowerShell dan saya pikir "... itu harus membuat mereka tetap terpisah!!".

Tapi itu pendapat saya!
:)

Pemahaman saya tentang Paket Kompatibilitas Windows PowerShell adalah bahwa paket itu berisi semua yang tidak akan pernah di-porting.

Maksud dari Paket Kompatibilitas Windows PowerShell adalah untuk sementara membantu pengguna Windows PowerShell yang ada pindah ke PSCore6. Rencana jangka panjangnya adalah memiliki modul yang berjalan secara native di PSCore6 serta menjadi lintas platform. Beberapa tim mungkin memutuskan bahwa mereka tidak akan pernah melakukan port ke PSCore6 atau mereka akan melakukannya, tetapi tidak berinvestasi untuk membuatnya kompatibel lintas platform. Influencer terbesar untuk membantu mereka membuat keputusan _benar_ adalah umpan balik pelanggan (bukan Tim PowerShell tempat kami mewakili pelanggan).

Jika saya memiliki skrip yang memiliki dependensi pada .Net framework dll, saya harus mencari versi inti .Net dari dependensi tersebut melalui nuget dan kemudian mencoba mem-port skrip ke PS6? Tidak ada "pembungkus" untuk dependensi ini, benar?

@dudeNumber4 itu tergantung. Jika itu adalah perakitan PSCore6 sudah termasuk (dan kami menyertakan banyak), maka Anda tidak perlu melakukan perubahan apa pun kecuali Anda merujuk ke dll tertentu melalui jalur. Misalnya, jika Anda bergantung pada System.DirectoryServices.AccountManagement.dll sebelumnya menggunakan Add-Type untuk memuat, jika Anda tidak menentukan jalur, itu hanya akan berfungsi.

@dudeNumber4 itu tergantung. Jika itu adalah perakitan PSCore6 sudah termasuk (dan kami menyertakan banyak), maka Anda tidak perlu melakukan perubahan apa pun kecuali Anda merujuk ke dll tertentu melalui jalur. Misalnya, jika Anda bergantung pada System.DirectoryServices.AccountManagement.dll sebelumnya menggunakan Add-Type untuk memuat, jika Anda tidak menentukan jalur, itu hanya akan berfungsi.

Oke, coba saja New-Object System.Data.OleDb.OleDbConnection . _Tidak dapat menemukan tipe_. Pada nuget, saya melihat beberapa jenis port yang mengklaim dukungan untuk .Net Standard 2.0. Untuk mem-port skrip, saya harus menambahkan pemulihan nuget dari perpustakaan itu, benar?

@dudeNumber4 kami tidak menyertakan Majelis itu sebagai bagian dari PSCore6 itu sendiri, jadi untuk menggunakannya, Anda harus dapat menggunakan Install-Package untuk mengunduh nupkg itu saat runtime, atau melakukannya secara manual dan cukup sertakan Majelis itu dengan Anda naskah.

WebAdministration - apakah xWebAdministration pengganti, atau akankah WebAdministration di-porting?

@IanKemp modul itu dimiliki oleh tim IIS jadi saya tidak tahu rencananya. Namun, terakhir kali tim saya melihat modul itu, beberapa ruang nama .Net Framework yang diperlukan tidak tersedia di .Net Core, jadi sampai itu terjadi, itu tidak akan berfungsi kecuali mereka menulis ulang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat