PowerShell Galerisi hakkında sıkça sorulan sorular

PowerShell modülü nedir?

PowerShell modülü, bazı PowerShell işlevlerini içeren yeniden kullanılabilir bir pakettir. PowerShell'deki her şey (fonksiyonlar, değişkenler, DSC kaynakları vb.) modüllerde paketlenebilir. Genellikle, modüller belirli bir yolda depolanan belirli türde dosya içeren klasörlerdir. Piyasada birkaç farklı PowerShell modülü türü var.

PowerShell betiği nedir?

PowerShell betikleri, tekrar kullanım ve paylaşım için .ps1 bir dosyada saklanan bir dizi komuttur. PowerShell iş akışları aynı zamanda bir dizi görevi özetleyen ve bu görevler için sıralanma sağlayan PowerShell betikleridir. Daha fazla bilgi için lütfen PowerShell İş Akışı ile Başlama sayfasını ziyaret edin.

PowerShell Script'leri Modüllerden Nasıl Farklıdır?

Modüller genellikle paylaşım için daha iyidir, ancak betik paylaşımını etkinleştiriyoruz, böylece topluluğa iş akışı ve script katkısı daha kolay hale geliyor. Daha fazla bilgi için aşağıdaki bloglara bakabilirsiniz:

PowerShell Galerisi'ye nasıl yayınlayabilirim?

Paketleri Galeri'ye yayınlayabilmek için PowerShell Galerisi'de bir hesap kaydetmeniz gerekir. Bunun nedeni, paket yayınlama için kayıt sırasında sağlanan bir NuGetApiKey gerektirmesidir. Kayıt olmak için kişisel, iş veya okul hesabınızı kullanarak PowerShell Galerisi'ye giriş yapın. İlk kez giriş yaptığınızda tek seferlik bir kayıt süreci gereklidir. Sonrasında NuGetApiKey'iniz profil sayfanızda mevcut.

Galeri'ye kayıt yaptıktan sonra, paketinizi Galeri'ye yayınlamak için Publish-Module veya Publish-Script cmdlet'lerini kullanın. Bu cmdlet'lerin nasıl çalıştırılacağı hakkında daha fazla bilgi için Publish sekmesini ziyaret edin veya Publish-Module ve Publish-Script dokümantasyonlarını okuyun.

Paketleri yüklemek veya kaydetmek için Galeri'ye kayıt yapmanız veya giriş yapmanız gerekmez.

"İstek işleme alınmadı" mesajı aldım. PowerShell Galerisi'ye bir paket yayınlamaya çalıştığımda. Bu ne anlama geliyor?

Tam hata mesajı: "İstek işlemedi ve işlemedi." 'Belirtilen API anahtarı geçersizdir veya belirtilen pakete erişim izni yoktur.'. Uzak sunucu bir hata gönderdi: (403) Yasaklandı."

Bu hata aşağıdaki nedenlerle oluşabilir:

  • Belirtilen API anahtarı geçersizdir. Hesabınızdan geçerli API anahtarını belirttiğinizden emin olun. API anahtarınızı almak için profil sayfanızı görüntüleyin.
  • Belirtilen paket adı size ait değildir. API anahtarınızın doğru olduğunu doğruladıysanız, kullanmak istediğiniz anahtarla aynı isimde bir paket zaten var olabilir. Paket sahibi tarafından listeden çıkarılmış olabilir, bu durumda hiçbir arama sonucunda görünmez. Aynı isimli bir paketin zaten var olup olmadığını anlamak için bir tarayıcı açın ve paketin ayrıntılar sayfasına gidin: https://www.powershellgallery.com/packages/<packageName>. Örneğin, doğrudan sayfaya https://www.powershellgallery.com/packages/pester gittiğinizde, ister listede olmasın, Pester modülünün detaylar sayfasına ulaşabilirsiniz. Çelişkili bir isme sahip bir paket zaten var ve listelenmemişse, şunları yapabilirsiniz:
    • Paketiniz için başka bir isim seçin.
    • Mevcut paketin sahipleriyle iletişime geçin.

Neden kişisel hesabımla giriş yapamıyorum ama dün giriş yapabildim?

Lütfen galeri hesabınızın, birincil e-posta takma adınızdaki değişiklikleri kabul etmediğini unutmayın. Daha fazla bilgi için Microsoft E-posta Takma Adı sayfasına bakınız.

Paketler sekmesindeki tüm Kategori işaret kutularını seçtiğimde neden tüm galeri paketlerini görmüyorum?

Kategori işaret kutusu seçerek "Bu kategorideki tüm paketleri görmek istiyorum" demektir. Yalnızca seçilen kategorilerdeki paketler gösterilecektir. Benzer şekilde, tüm Kategori kutularını seçerek, "Herhangi bir kategorideki tüm paketleri görmek istiyorum" diyorsunuz. Ancak galerideki bazı paketler listelenen kategorilerin hiçbirine ait olmadığı için sonuçlarda görünmezler. Galerideki tüm paketleri görmek için tüm Kategorileri işaretinden kaldırın veya tekrar paketler sekmesini seçin.

PowerShell Galerisi'ye bir modül yayınlamak için gereksinimler nelerdir?

Her türlü PowerShell modülü (script modülleri, ikili modüller veya manifest modülleri) galeriye yayınlanabilir. Bir modül yayınlamak için PowerShellGet'in bu modül hakkında birkaç şeyi bilmesi gerekir - sürüm, açıklama, yazar ve nasıl lisanslandığı. Bu bilgi, modül manifest (.psd1) dosyasından veya Publish-Module cmdlet'in LicenseUri parametresinin değerinden yayınlama sürecinin bir parçası olarak okunur. Galeri'ye yayınlanan tüm modüllerin modül manifestoları olmalıdır. Manifestosında aşağıdaki bilgileri içeren herhangi bir modül Galeri'ye yayımlanabilir:

  • Version
  • Açıklama
  • Author
  • Modülün lisans şartlarına bir URI, manifestodaki PrivateData bölümünde veya Publish-Module cmdlet'inin LicenseUri parametresinde.

Doğru biçimlendirilmiş bir modül manifestosunu nasıl oluşturabilirim?

Modül manifestosu oluşturmanın en kolay yolu New-ModuleManifest cmdlet'ini çalıştırmaktır. PowerShell 5.0 veya daha yenilerinde, New-ModuleManifest ProjectUri, LicenseUri ve Etiketler gibi faydalı meta veriler için boş alanlarla doğru biçimlendirilmiş bir modül manifestesi oluşturur. Sadece boşlukları doldurun veya oluşturulan manifestobunu doğru biçimlendirme örneği olarak kullanın.

Tüm gerekli meta veri alanlarının doğru şekilde doldurulduğunu doğrulamak için Test-ModuleManifest komutasını kullanın.

Modül manifesto dosya alanlarını güncellemek için Update-ModuleManifest cmdlet'ini kullanın.

Bir senaryoyu Galeri'ye yayınlamak için gereksinimler nelerdir?

Her türlü PowerShell betiği (scriptler veya iş akışları) galeriye yayınlanabilir. Bir betik yayınlamak için PowerShellGet'in onun hakkında birkaç şeyi bilmesi gerekir - sürüm, açıklama, yazar ve nasıl lisanslandığı. Bu bilgi, yayınlama sürecinin bir parçası olarak script dosyasının PSScriptInfo bölümünden veya Publish-Script cmdlet'in LicenseUri parametresinin değerinden okunur. Galeri'ye yayınlanan tüm betiklerin meta veri bilgisi olması gerekir. PSScriptInfo bölümünde aşağıdaki bilgileri içeren herhangi bir betik Galeri'ye yayımlanabilir:

  • Version
  • Açıklama
  • Author
  • Script'in lisans şartlarına bir URI, ya betikin PSScriptInfo bölümünde ya da Publish-Script cmdlet'inin LicenseUri parametresinde.

Nasıl arama yapabilirim?

Aradığınız şeyi metin kutusuna yazın. Örneğin, Azure SQL ile ilgili modüller bulmak istiyorsanız, sadece "Azure SQL" yazın. Arama motorumuz, bu anahtar kelimeleri tüm yayımlanan paketlerde, başlıklar, açıklamalar ve meta veriler dahil olmak üzere arayacaktır. Sonra, ağırlıklı bir kalite puanına dayanarak, en yakın eşleşmeleri gösterecek. Ayrıca, arama sorgusunda field:"value" sözdizimini kullanarak aşağıdaki alanlar için belirli alanlara göre arama yapabilirsiniz:

  • Etiketler
  • Functions
  • Cmdlet'ler
  • DscResources
  • PowerShellVersion

Örneğin, PowerShellVersion:"2.0" aradığınızda yalnızca PowerShellSürüm 2.0 ile uyumlu (modül/betik manifestosuna dayanarak) sonuçlar gösterilecektir.

Doğru biçimlendirilmiş bir script dosyasını nasıl oluşturabilirim?

Doğru biçimlendirilmiş bir script dosyası oluşturmanın en kolay yolu New-ScriptFileInfo cmdlet'ini çalıştırmaktır. PowerShell 5.0'da, New-ScriptFileInfo ProjectUri, LicenseUri ve Etiketler gibi faydalı meta veriler için boş alanlarla doğru biçimlendirilmiş bir script dosyası oluşturur. Sadece boşlukları doldurun veya oluşturulan script dosyasını doğru biçimlendirme örneği olarak kullanın.

Tüm gerekli meta veri alanlarının doğru şekilde doldurulduğunu doğrulamak için Test-ScriptFileInfo cmdlet'ini kullanın.

Script meta veri alanlarını güncellemek için Update-ScriptFileInfo cmdlet'ini kullanın.

Başka hangi PowerShell Modülü türleri mevcut?

PowerShell modülü terimi, gerçek işlevselliği uygulayan dosyaları da ifade eder. Script modülü dosyaları (.psm1) PowerShell kodu içerir. İkili modül dosyaları (.dll) derlenmiş kod içerir.

Bunu düşünmek için bir yol şu: modülü kapsülleyen klasör, modül klasörüdür. Modül klasörü, klasörün içeriğini tanımlayan bir modül manifestosu (.psd1) içerebilir. Gerçekten işi yapan dosyalar script modül dosyaları (.psm1) ve ikili modül dosyaları (.dll). DSC kaynakları belirli bir alt klasörde bulunur ve script modül dosyaları veya ikili modül dosyaları olarak uygulanır.

Galeri'deki tüm modüller modül manifestoları içerir ve bu modüllerin çoğu script modül dosyaları veya ikili modül dosyaları içerir. Modül terimi, bu farklı anlamlar nedeniyle kafa karıştırıcı olabilir. Aksi belirtilmedikçe, bu sayfadaki kelime modülünün tüm kullanımları bu dosyaları içeren modül klasörüne atıfta bulunur.

PackageManagement'ın PowerShellGet ile ilişkisi nedir? (Yüksek Seviye Cevap)

PackageManagement, herhangi bir paket yöneticisiyle çalışmak için yaygın bir arayüzdür. Sonunda, PowerShell modülleri, MSI'lar, Ruby mücevherleri, NuGet paketleri veya Perl modülleriyle ilgileniyor olun, PackageManagement'ın komutlarını (Find-Package ve Install-Package) kullanarak onları bulup kurabilmelisiniz. PackageManagement bunu, her paket yöneticisi için PackageManagement'a bağlanan bir paket sağlayıcısı ile yapar. Sağlayıcılar tüm gerçek işleri yapar; Depolardan içerik alır ve içeriği yerel olarak yükler. Çoğu zaman, paket sağlayıcıları belirli bir paket türü için mevcut paket yöneticisi araçlarını tamamen sarar.

PowerShellGet, PowerShell paketleri için paket yöneticisidir. PowerShellGet işlevselliğini PackageManagement aracılığıyla ortaya çıkaran bir PSModule paket sağlayıcısı vardır. Bu nedenle, ya Install-Module çalıştırabilir ya da Install-Package -Provider PSModule PowerShell Galerisi'den bir modül kurabilirsiniz. Update-Module ve Publish-Module gibi bazı PowerShellGet işlevlerine PackageManagement komutlarıyla erişilemez.

Özetle, PowerShellGet tamamen PowerShell içeriği için premium bir paket yönetim deneyimi sunmaya odaklanıyor. PackageManagement, tüm paket yönetim deneyimlerini tek bir araç seti aracılığıyla ortaya çıkarmaya odaklanır. Eğer bu cevabı tatmin edici bulmuyorsanız, bu belgenin en sonunda, PackageManagement aslında PowerShellGet ile nasıl ilişkili olduğu bölümünde uzun bir cevap var.

Daha fazla bilgi için lütfen PackageManagement proje sayfasını ziyaret edin.

NuGet'in PowerShellGet ile ilişkisi nedir?

PowerShell Galerisi, NuGet Gallery'nin değiştirilmiş bir versiyonudur. PowerShellGet, PowerShell Galerisi gibi NuGet tabanlı depolarla çalışmak için NuGet sağlayıcısını kullanır.

PowerShellGet'i herhangi bir geçerli NuGet deposu veya dosya paylaşımına karşı kullanabilirsin. Register-PSRepository cmdlet'ini çalıştırarak depoyu eklemeniz yeterlidir.

Bu, NuGet.exe Galeri ile çalışmak için kullanabileceğim anlamına mı geliyor?

Evet.

PackageManagement aslında PowerShellGet ile nasıl ilişkili? (teknik detaylar)

Temelde PowerShellGet, PackageManagement altyapısından büyük ölçüde yararlanıyor.

PowerShell cmdlet katmanında, Install-Module aslında etrafında Install-Package -Provider PSModuleince bir wrapper'dır.

PackageManagement paket sağlayıcı katmanında, PSModule paket sağlayıcısı aslında diğer PackageManagement paket sağlayıcılarını çağırır. Örneğin, NuGet tabanlı galerilerle (örneğin PowerShell Galerisi) çalışırken, PSModule paket sağlayıcısı depoyla çalışmak için NuGet Paket Sağlayıcısını kullanır.

PowerShellGet Mimarisi Diyagramı

Şekil 1: PowerShellGet Mimarisi

PowerShellGet'i çalıştırmak için ne gereklidir?

Genel olarak PowerShellGet modülünün en son sürümünü seçmenizi öneriyoruz (bunun .NET 4.5 gerektirdiğini unutmayın).

PowerShellGet modülü PowerShell 3.0 veya daha yenisini gerektirir.

Bu nedenle, PowerShellGet aşağıdaki işletim sistemlerinden birini gerektirir:

  • Windows 10
  • Windows 8.1 Pro
  • Windows 8.1 Enterprise
  • Windows 7 SP1
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2008 R2 SP1

PowerShellGet ayrıca .NET Framework 4.5 veya üzeri gerektirir. Daha fazla bilgi için bkz. Geliştiriciler için .NET Framework'ü yükleme.

Gelecekte yayımlanacak paketler için isimleri ayırtmak mümkün mü?

Paket isimlerini squat etmek mümkün değildir. Mevcut bir paketin paketinize daha uygun ismi aldığını düşünüyorsanız, paketin sahibiyle iletişime geçmeyi deneyin. Birkaç hafta içinde yanıt alamıyorsanız, destek ekibiyle iletişime geçebilirsiniz ve PowerShell Galerisi ekibi bunu araştıracaktır.

Paketlerin mülkiyetini nasıl talep edebilirim?

Paket lisansımı ihlal eden bir paket sahibiyle nasıl başa çıkabilirim?

PowerShell topluluğunu, paket sahipleri ile diğer paketlerin sahipleri arasında ortaya çıkabilecek anlaşmazlıkları çözmek için birlikte çalışmaya teşvik ediyoruz. Yöneticiler müdahale etmeden önce takip etmenizi istediğiniz bir uyuşmazlık çözüm süreci oluşturduk PowerShellGallery.com.