Gyakori kérdések a PowerShell-galéria

Mi az a PowerShell-modul?

A PowerShell-modul egy újrafelhasználható csomag, amely néhány PowerShell-funkciót tartalmaz. A PowerShell minden funkciója (függvények, változók, DSC-erőforrások stb.) modulokba csomagolható. A modulok általában olyan mappák, amelyek adott elérési úton tárolt fájltípusokat tartalmaznak. A PowerShell-moduloknak van néhány különböző típusa.

Mi az a PowerShell-szkript?

A PowerShell-szkript olyan parancsok sorozata, amelyek egy .ps1 fájlban vannak tárolva az újbóli használat és a megosztás engedélyezéséhez. A PowerShell-munkafolyamatok szintén PowerShell-szkriptek, amelyek egy feladatkészletet vázolnak fel, és szekvenálást biztosítanak ezekhez a tevékenységekhez. További információ: Első lépések a PowerShell-munkafolyamattal.

Miben különböznek a PowerShell-szkriptek a PowerShell-moduloktól?

A modulok általában jobbak a megosztáshoz, de lehetővé tesszük a szkriptek megosztását, hogy megkönnyítsük a munkafolyamatok és szkriptek közösséghez való hozzáadását. További információkért tekintse meg az alábbi blogokat:

Hogyan tehetem közzé a PowerShell-galéria?

Mielőtt csomagokat tehet közzé a katalógusban, regisztrálnia kell egy fiókot a PowerShell-galéria. Ennek az az oka, hogy a közzétételi csomagokhoz nuGetApiKey szükséges, amelyet a regisztrációkor adnak meg. A regisztrációhoz használja a személyes, munkahelyi vagy iskolai fiókját a PowerShell-galéria való bejelentkezéshez. Egyszeri regisztrációs folyamatra van szükség, amikor először jelentkezik be. Ezt követően a NuGetApiKey elérhető a profillapon.

Miután regisztrált a katalógusban, a Publish-Module vagy a Publish-Script parancsmagokkal tegye közzé a csomagot a katalógusban. A parancsmagok futtatásával kapcsolatos további részletekért látogasson el a Közzététel lapra, vagy olvassa el a Publish-Module and Publish-Script dokumentációt.

A csomagok telepítéséhez vagy mentéséhez nem kell regisztrálnia vagy bejelentkeznie a katalógusba.

A következőt kaptam: "Nem sikerült feldolgozni a kérést". amikor megpróbáltam közzétenni egy csomagot a PowerShell-galéria. Ez mit jelent?

A teljes hibaüzenet a következő: "Nem sikerült feldolgozni a kérést." "A megadott API-kulcs érvénytelen, vagy nem rendelkezik engedéllyel a megadott csomag eléréséhez." A távoli kiszolgáló hibát adott vissza: (403) Tiltott."

Ez a hiba a következő okok miatt fordulhat elő:

  • A megadott API-kulcs érvénytelen. Győződjön meg arról, hogy megadta az érvényes API-kulcsot a fiókjából. Az API-kulcs beszerzéséhez tekintse meg a profillapját.
  • A megadott csomagnév nem Az Öné. Ha meggyőződött arról, hogy az API-kulcs helyes, akkor előfordulhat, hogy már létezik olyan csomag, amelynek neve megegyezik a használni kívánt névvel. Előfordulhat, hogy a csomag nem szerepel a tulajdonos listájában, ebben az esetben nem jelenik meg a keresési eredmények között. Annak megállapításához, hogy létezik-e már ilyen nevű csomag, nyisson meg egy böngészőt, és lépjen a csomag részleteinek lapjára: https://www.powershellgallery.com/packages/<packageName>. Ha például közvetlenül a lapra https://www.powershellgallery.com/packages/pester navigál, a Pester modul részletes lapjára kerül, függetlenül attól, hogy az szerepel-e a listán, vagy sem. Ha egy ütköző nevű csomag már létezik, és nem szerepel a listán, a következőt teheti:
    • Válasszon másik nevet a csomagnak.
    • Lépjen kapcsolatba a meglévő csomag tulajdonosával.

Miért nem tudok bejelentkezni a személyes fiókommal, de tegnap be tudok jelentkezni?

Vegye figyelembe, hogy a katalógusfiók nem tartalmazza az elsődleges e-mail-alias módosításait. További információ: Microsoft Email Aliasok.

Miért nem látom az összes katalóguscsomagot, amikor bejelölöm az összes Kategória jelölőnégyzetet a csomagok lapon?

A Kategória jelölőnégyzet bejelölésével a következőt adja meg: "Szeretném látni az összes csomagot ebben a kategóriában". Csak a kiválasztott kategóriákban lévő csomagok jelennek meg. Hasonlóképpen, az összes Kategória jelölőnégyzet bejelölésével a következőt fogja feltüntetni: "Minden csomagot látni szeretnék bármely kategóriában". A katalógus egyes csomagjai azonban nem tartoznak a felsorolt kategóriák egyikéhez sem, így nem jelennek meg az eredményekben. A katalógus összes csomagjának megtekintéséhez törölje az összes kategória jelölését, vagy jelölje be ismét a Csomagok lapot.

Milyen követelmények vonatkoznak a modul PowerShell-galéria való közzétételére?

Bármilyen PowerShell-modul (szkriptmodulok, bináris modulok vagy jegyzékmodulok) közzétehető a katalógusban. Egy modul közzétételéhez a PowerShellGetnek tudnia kell néhány dolgot róla : a verziót, a leírást, a szerzőt és a licencelés módját. Ezeket az információkat a közzétételi folyamat részeként olvassa be a rendszer a moduljegyzékfájlból (.psd1) vagy a Publish-Module parancsmag LicenseUri paraméterének értékéből. A katalógusban közzétett összes modulnak rendelkeznie kell moduljegyzékekkel. Bármely modul, amely a jegyzékben a következő információkat tartalmazza, közzétehető a katalógusban:

  • Verzió
  • Leírás
  • Szerző
  • A modul licencfeltételeinek URI-ja a jegyzék PrivateData szakaszának részeként vagy a Publish-Module parancsmag LicenseUri paraméterében.

Hogyan megfelelően formázott moduljegyzéket létrehozni?

A moduljegyzék létrehozásának legegyszerűbb módja a New-ModuleManifest parancsmag futtatása. A PowerShell 5.0-s vagy újabb verziójában a New-ModuleManifest létrehoz egy helyesen formázott moduljegyzéket üres mezőkkel a hasznos metaadatokhoz( például ProjectUri, LicenseUri és Címkék). Egyszerűen töltse ki az üres elemet, vagy használja a létrehozott jegyzékfájlt a helyes formázás példájaként.

A Test-ModuleManifest parancsmaggal ellenőrizheti, hogy az összes szükséges metaadatmező megfelelően ki van-e töltve.

A modul jegyzékfájlmezőinek frissítéséhez használja az Update-ModuleManifest parancsmagot.

Milyen követelmények vonatkoznak egy szkript katalógusban való közzétételére?

Bármilyen PowerShell-szkript (szkript vagy munkafolyamat) közzétehető a katalógusban. A szkriptek közzétételéhez a PowerShellGetnek tudnia kell néhány dolgot – a verziót, a leírást, a szerzőt és a licencelés módját. Ezeket az információkat a rendszer a közzétételi folyamat részeként olvassa be a szkriptfájl PSScriptInfo szakaszából vagy a Publish-Script parancsmag LicenseUri paraméterének értékéből. A katalógusban közzétett összes szkriptnek metaadat-információkkal kell rendelkeznie. A PSScriptInfo szakaszban található összes szkript közzétehető a Katalógusban:

  • Verzió
  • Leírás
  • Szerző
  • A szkript licencfeltételeinek URI-ja a szkript PSScriptInfo szakaszának részeként vagy a Publish-Script parancsmag LicenseUri paraméterében.

Hogyan keresést?

Írja be a keresett szöveget a szövegmezőbe. Ha például Azure SQL kapcsolódó modulokat szeretne keresni, egyszerűen írja be az "azure sql" kifejezést. A keresőmotor az összes közzétett csomagban megkeresi ezeket a kulcsszavakat, beleértve a címeket, a leírásokat és a metaadatokat. Ezután a súlyozott minőségi pontszám alapján a legközelebbi találatokat jeleníti meg. A keresési lekérdezésben a következő mezők mező:"value" szintaxisával is kereshet adott mezők szerint:

  • Címkék
  • Functions
  • Parancsmagok
  • DscResources
  • PowerShellVersion

Így például amikor a PowerShellVersion:"2.0" kifejezésre keres, csak a PowerShellVersion 2.0-val kompatibilis (a modul/szkript jegyzékfájlja alapján) kompatibilis találatok jelennek meg.

Hogyan létrehozni egy helyesen formázott szkriptfájlt?

A legegyszerűbben a New-ScriptFileInfo parancsmag futtatásával hozhat létre megfelelően formázott szkriptfájlt. A PowerShell 5.0-ban New-ScriptFileInfo létrehoz egy helyesen formázott szkriptfájlt üres mezőkkel a hasznos metaadatokhoz( például ProjectUri, LicenseUri és Címkék). Egyszerűen töltse ki az üres elemet, vagy használja a létrehozott szkriptfájlt a helyes formázás példájaként.

Annak ellenőrzéséhez, hogy az összes szükséges metaadatmező megfelelően ki van-e töltve, használja a Test-ScriptFileInfo parancsmagot.

A szkript metaadatmezőinek frissítéséhez használja az Update-ScriptFileInfo parancsmagot.

Milyen más típusú PowerShell-modulok léteznek?

A PowerShell-modul kifejezés a tényleges funkciókat megvalósító fájlokra is vonatkozik. A szkriptmodulfájlok (.psm1) PowerShell-kódot tartalmaznak. A bináris modulfájlok (.dll) lefordított kódot tartalmaznak.

Az alábbiakban egy módszert talál erre: a modult tartalmazó mappa a modulmappa. A modulmappa tartalmazhat egy moduljegyzéket (.psd1), amely leírja a mappa tartalmát. A munkát ténylegesen elvégzendő fájlok a szkriptmodulfájlok (.psm1) és a bináris modulfájlok (.dll). A DSC-erőforrások egy adott almappában találhatók, és szkriptmodul-fájlokként vagy bináris modulfájlokként vannak implementálva.

A katalógus összes modulja tartalmaz moduljegyzékeket, és a legtöbb modul szkriptmodul-fájlokat vagy bináris modulfájlokat tartalmaz. A modul kifejezés e különböző jelentései miatt zavaró lehet. Hacsak nem kifejezetten másként van meghatározva, a word modul ezen az oldalon található összes használata az ezeket a fájlokat tartalmazó modulmappára hivatkozik.

Hogyan kapcsolódik a PackageManagement a PowerShellGethez? (Magas szintű válasz)

A PackageManagement a csomagkezelők közös felülete. Végül, függetlenül attól, hogy PowerShell-modulokkal, MSI-kkel, Ruby gemekkel, NuGet-csomagokkal vagy Perl-modulokkal foglalkozik, képesnek kell lennie a PackageManagement parancsaival (Find-Package és Install-Package) megtalálni és telepíteni őket. A PackageManagement ezt úgy teszi meg, hogy minden csomagkezelőhöz rendelkezik egy csomagszolgáltatóval, amely a PackageManagementhez csatlakozik. A szolgáltatók az összes tényleges munkát elvégezik; lekérik a tartalmat az adattárakból, és helyileg telepítik a tartalmat. A csomagszolgáltatók gyakran egyszerűen körbefuttatják a meglévő csomagkezelő eszközöket egy adott csomagtípushoz.

A PowerShellGet a PowerShell-csomagok csomagkezelője. Létezik egy PSModule-csomagszolgáltató, amely a PackageManagementen keresztül teszi elérhetővé a PowerShellGet funkcióit. Emiatt futtathatja az Install-Module parancsot, vagy Install-Package -Provider PSModule telepítheti a modult a PowerShell-galéria. Bizonyos PowerShellGet-funkciók, például az Update-Module és a Publish-Module nem érhetők el PackageManagement parancsokkal.

Összefoglalva, a PowerShellGet kizárólag arra összpontosít, hogy prémium szintű csomagkezelési élményt nyújtsunk a PowerShell-tartalmakhoz. A PackageManagement arra összpontosít, hogy az összes csomagkezelési szolgáltatást egyetlen általános eszközkészleten keresztül tegye közzé. Ha ezt a választ nem találja kielégítőnek, hosszú válasz található a dokumentum alján, a How does PackageManagement actually relate to PowerShellGet? (Hogyan kapcsolódik a PackageManagement a PowerShellGethez? című szakaszhoz.

További információért látogasson el a PackageManagement projekt oldalára.

Hogyan kapcsolódik a NuGet a PowerShellGethez?

A PowerShell-galéria a NuGet-katalógus módosított verziója. A PowerShellGet NuGet-szolgáltatót használ a NuGet-alapú adattárak, például a PowerShell-galéria használatához.

A PowerShellGetet bármely érvényes NuGet-adattárhoz vagy fájlmegosztáshoz használhatja. Egyszerűen hozzá kell adnia az adattárat a Register-PSRepository parancsmag futtatásával.

Ez azt jelenti, hogy használhatom NuGet.exe a Galériával való együttműködéshez?

Igen.

Hogyan kapcsolódik a PackageManagement a PowerShellGethez? (Technikai részletek)

A háttérben a PowerShellGet nagy mértékben kihasználja a PackageManagement infrastruktúrát.

A PowerShell-parancsmag rétegben az Install-Module valójában egy vékony burkoló a körül Install-Package -Provider PSModule.

A PackageManagement csomagszolgáltatói rétegben a PSModule csomagszolgáltató valójában más PackageManagement-csomagszolgáltatókhoz hív meg. Ha például NuGet-alapú katalógusokkal (például a PowerShell-galéria) dolgozik, a PSModule csomagszolgáltató a NuGet-csomagszolgáltatót használja az adattár használatához.

A PowerShellGet architektúrájának ábrája

1. ábra: PowerShellGet-architektúra

Mi szükséges a PowerShellGet futtatásához?

Általában azt javasoljuk, hogy a PowerShellGet modul legújabb verzióját válassza (vegye figyelembe, hogy a .NET 4.5-ös verziójára van szükség).

A PowerShellGet modulhoz a PowerShell 3.0-s vagy újabb verziójára van szükség.

Ebből kifolyólag a PowerShellGet-modulhoz az alábbi operációs rendszerek egyikére van szükség:

  • 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

A PowerShellGet használatához .NET-keretrendszer 4.5-ös vagy újabb verzió szükséges. További információ: Az .NET-keretrendszer telepítése fejlesztőknek.

Lehetséges-e a jövőben közzétett csomagok nevének lefoglalása?

A csomagneveket nem lehet zömökre tenni. Ha úgy érzi, hogy egy meglévő csomag a csomagnak jobban megfelelő nevet vette fel, lépjen kapcsolatba a csomag tulajdonosával. Ha néhány héten belül nem kap választ, felveheti a kapcsolatot az ügyfélszolgálattal, és a PowerShell-galéria csapata rákeres.

Hogyan csomagok tulajdonjogát?

A részletekért tekintse meg a Csomagtulajdonosok kezelése PowerShellGallery.com című témakört.

Hogyan olyan csomagtulajdonossal foglalkozik, aki megsérti a csomaglicencemet?

Javasoljuk, hogy a PowerShell-közösséggel együttműködve oldja meg a csomagtulajdonosok és más csomagok tulajdonosai között esetlegesen felmerülő vitákat. Kidolgoztunk egy vitarendezési folyamatot , amelyet arra kérünk, hogy kövesse, mielőtt PowerShellGallery.com rendszergazdák közbeszólnak.