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 laprahttps://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.
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.