Veelgestelde vragen over de PowerShell Gallery

Wat is een PowerShell-module?

Een PowerShell-module is een herbruikbaar pakket met enige PowerShell-functionaliteit. Alles in PowerShell (functies, variabelen, DSC-resources, enz.) kan in modules worden verpakt. Meestal zijn modules mappen met specifieke soorten bestanden die op een specifiek pad zijn opgeslagen. Er zijn een paar verschillende soorten PowerShell-modules beschikbaar.

Wat is een PowerShell-script?

Een PowerShell-script is een reeks commando's die in een .ps1 bestand worden opgeslagen om hergebruik en delen mogelijk te maken. PowerShell-workflows zijn ook PowerShell-scripts, die een set taken aangeven en de volgorde van die taken bieden. Voor meer informatie, bezoek Getting Started with PowerShell Workflow.

Hoe verschillen PowerShell-scripts van PowerShell-modules?

Modules zijn over het algemeen beter om te delen, maar we zetten scriptdeling in om het makkelijker te maken voor jou om workflows en scripts aan de community bij te dragen. Voor meer informatie, zie de volgende blogs:

Je moet een account registreren in de PowerShell Gallery voordat je pakketten naar de Gallery kunt publiceren. Dit komt doordat publicatiepakketten een NuGetApiKey vereist, die bij registratie wordt verstrekt. Om je te registreren, gebruik je je persoonlijke, werk- of schoolaccount om in te loggen op de PowerShell Gallery. Een eenmalig registratieproces is vereist bij het eerste inlogen. Daarna is je NuGetApiKey beschikbaar op je profielpagina.

Zodra je je hebt geregistreerd in de galerij, gebruik je de cmdlets Publish-Module of Publish-Script om je pakket in de galerij te publiceren. Voor meer details over hoe je deze cmdlets uitvoert, bezoek het tabblad Publiceren, of lees de documentatie van Publish-Module en Publish-Script .

Je hoeft je niet te registreren of in te loggen op de Gallery om pakketten te installeren of op te slaan.

Het volledige foutbericht is: "Verzoek niet verwerkt." 'De opgegeven API-sleutel is ongeldig of heeft geen toestemming om toegang te krijgen tot het opgegeven pakket.'. De externe server gaf een foutmelding: (403) Verboden."

Deze fout kan om de volgende redenen optreden:

  • De opgegeven API-sleutel is ongeldig. Zorg ervoor dat je de geldige API-sleutel van je account hebt opgegeven. Om je API-sleutel te krijgen, bekijk je profielpagina.
  • De opgegeven pakketnaam is niet van jou. Als je hebt bevestigd dat je API-sleutel correct is, bestaat er mogelijk al een pakket met dezelfde naam als het pakket dat je probeert te gebruiken. Het pakket kan door de eigenaar zijn verwijderd, in welk geval het niet in zoekresultaten zal verschijnen. Om te bepalen of er al een pakket met dezelfde naam bestaat, open je een browser en ga je naar de detailpagina van het pakket: https://www.powershellgallery.com/packages/<packageName>. Bijvoorbeeld, direct https://www.powershellgallery.com/packages/pester navigeren naar brengt je naar de detailpagina van de Pester-module, of deze nu niet vermeld is of niet. Als er al een pakket met een conflicterende naam bestaat en niet vermeld is, kun je:
    • Kies een andere naam voor je pakket.
    • Neem contact op met de eigenaren van het bestaande pakket.

Waarom kan ik niet inloggen met mijn persoonlijke account, maar kon ik gisteren wel inloggen?

Houd er rekening mee dat je galerijaccount geen wijzigingen in je primaire e-mailalias accepteert. Voor meer informatie, zie Microsoft Email Aliases.

Waarom zie ik niet alle galerijpakketten als ik alle categorie-selectievakjes selecteer op het pakkettentabblad?

Door een vakje categorie aan te vinken, geeft u aan: "Ik wil graag alle pakketten in deze categorie zien." Alleen de pakketten in de geselecteerde categorieën worden getoond. Op dezelfde manier, door alle Categorie-selectievakjes aan te vinken, zeg je "Ik wil graag alle pakketten in elke categorie zien." Maar sommige pakketten in de galerij behoren niet tot een van de genoemde categorieën, dus ze verschijnen niet in de resultaten. Om alle pakketten in de galerij te zien, haalt u alle categorieën uit of selecteert u opnieuw het tabblad pakketten.

Elke vorm van PowerShell-module (scriptmodules, binaire modules of manifestmodules) kan in de galerij worden gepubliceerd. Om een module te publiceren, moet PowerShellGet een paar dingen weten - de versie, beschrijving, auteur en hoe het gelicentieerd is. Deze informatie wordt gelezen als onderdeel van het publicatieproces uit het module manifest (.psd1)-bestand, of uit de waarde van de LicenseUri-parameter van de Publish-Module cmdlet. Alle modules die in de Gallery worden gepubliceerd, moeten modulemanifesten bevatten. Elke module die de volgende informatie in zijn manifest bevat, kan worden gepubliceerd in de Galerij:

  • Versie
  • Description
  • Author
  • Een URI aan de licentievoorwaarden van de module, hetzij als onderdeel van het PrivateData-gedeelte van het manifest, hetzij in de LicenseUri-parameter van de Publish-Module cmdlet.

Hoe maak ik een correct geformatteerd modulemanifest?

De eenvoudigste manier om een modulemanifest te maken is door de commandostructuur New-ModuleManifest uit te voeren. In PowerShell 5.0 of nieuwer genereert New-ModuleManifest een correct geformatteerd modulemanifest met lege velden voor nuttige metadata zoals ProjectUri, LicenseUri en Tags. Vul simpelweg de lege plekken in, of gebruik het gegenereerde manifest als voorbeeld van correcte opmaak.

Om te verifiëren dat alle vereiste metadatavelden correct zijn ingevuld, gebruik je de Test-ModuleManifest cmdlet.

Om de modules manifest-bestandsvelden bij te werken, gebruik je de Update-ModuleManifest cmdlet.

Elk soort PowerShell-script (scripts of workflows) kan in de galerij worden gepubliceerd. Om een script te publiceren, moet PowerShellGet een paar dingen weten - de versie, beschrijving, auteur en hoe het gelicentieerd is. Deze informatie wordt gelezen als onderdeel van het publicatieproces vanuit de PSScriptInfo-sectie van het scriptbestand, of uit de waarde van de LicenseUri-parameter van de Publish-Script-cmdlet. Alle scripts die in de Gallery worden gepubliceerd, moeten metadata-informatie bevatten. Elk script dat de volgende informatie bevat in de PSScriptInfo-sectie kan worden gepubliceerd in de Galerij:

  • Versie
  • Description
  • Author
  • Een URI aan de licentievoorwaarden van het script, hetzij als onderdeel van de PSScriptInfo-sectie van het script, hetzij in de LicenseUri-parameter van de Publish-Script cmdlet.

Hoe zoek ik?

Typ wat je zoekt in het tekstvak. Als je bijvoorbeeld modules wilt vinden die gerelateerd zijn aan Azure SQL, typ dan gewoon "azure sql". Onze zoekmachine zal zoeken naar die trefwoorden in alle gepubliceerde pakketten, inclusief titels, beschrijvingen en metadata over de hele pagina. Vervolgens wordt op basis van een gewogen kwaliteitsscore de dichtstbijzijnde matches weergegeven. Je kunt ook zoeken op specifiek veld met de field:"value"-syntaxis in de zoekopdracht voor de volgende velden:

  • Tags
  • Functies
  • Cmdlets
  • DscResources
  • PowerShellVersion

Dus, bijvoorbeeld, wanneer je zoekt op PowerShellVersion:"2.0" worden alleen resultaten weergegeven die compatibel zijn met PowerShellVersion 2.0 (gebaseerd op hun module/scriptmanifest).

Hoe maak ik een correct geformatteerd scriptbestand?

De eenvoudigste manier om een correct opgemaakt scriptbestand te maken is door de cmdlet New-ScriptFileInfo uit te voeren. In PowerShell 5.0 genereert New-ScriptFileInfo een correct geformatteerd scriptbestand met lege velden voor nuttige metadata zoals ProjectUri, LicenseUri en Tags. Vul simpelweg de lege plekken in, of gebruik het gegenereerde scriptbestand als voorbeeld van correcte opmaak.

Om te verifiëren dat alle vereiste metadatavelden correct zijn ingevuld, gebruik je de cmdlet Test-ScriptFileInfo .

Om de metadatavelden van het script bij te werken, gebruik je de cmdlet Update-ScriptFileInfo .

Welke andere soorten PowerShell-modules bestaan er?

De term PowerShell-module verwijst ook naar de bestanden die daadwerkelijke functionaliteit implementeren. Scriptmodulebestanden (.psm1) bevatten PowerShell-code. Binaire modulebestanden (.dll) bevatten gecompileerde code.

Hier is een manier om erover na te denken: de map die de module encapsuleert is de modulemap. De modulemap kan een modulemanifest (.psd1) bevatten dat de inhoud van de map beschrijft. De bestanden die het werk daadwerkelijk doen zijn de scriptmodulebestanden (.psm1) en de binaire modulebestanden (.dll). DSC-bronnen bevinden zich in een specifieke submap en zijn geïmplementeerd als scriptmodulebestanden of binaire modulebestanden.

Alle modules in de Gallery bevatten modulemanifesten, en de meeste van deze modules bevatten scriptmodulebestanden of binaire modulebestanden. De term module kan verwarrend zijn vanwege deze verschillende betekenissen. Tenzij expliciet anders vermeld, verwijzen alle toepassingen van het woord module op deze pagina naar de modulemap met deze bestanden.

Hoe verhoudt PackageManagement zich tot PowerShellGet? (Hoog Antwoord)

PackageManagement is een veelgebruikte interface voor het werken met elke pakketbeheerder. Uiteindelijk, of je nu te maken hebt met PowerShell-modules, MSI's, Ruby-edelstenen, NuGet-pakketten of Perl-modules, zou je de commando's van PackageManagement (Find-Package en Install-Package) moeten kunnen gebruiken om ze te vinden en te installeren. PackageManagement doet dit door voor elke pakketmanager een pakketprovider te hebben die aansluit op PackageManagement. Zorgverleners doen al het daadwerkelijke werk; Ze halen content op uit repositories, en installeren deze lokaal. Vaak omwikkelen pakketaanbieders simpelweg de bestaande pakketbeheerderstools voor een bepaald pakkettype.

PowerShellGet is de pakketbeheerder voor PowerShell-pakketten. Er is een PSModule-pakketprovider die PowerShellGet-functionaliteit beschikbaar stelt via PackageManagement. Hierdoor kun je ofwel Install-Module draaien of Install-Package -Provider PSModule een module installeren vanuit de PowerShell Gallery. Bepaalde PowerShellGet-functionaliteiten, waaronder Update-Module en Publish-Module, kunnen niet worden benaderd via PackageManagement-commando's.

Samengevat richt PowerShellGet zich uitsluitend op het bieden van een premium ervaring met pakketbeheer voor PowerShell-inhoud. PackageManagement richt zich op het blootstellen van alle pakketbeheerervaringen via één algemene set tools. Als je dit antwoord onbevredigend vindt, staat er onderaan dit document een lang antwoord, in de sectie Hoe verhoudt PackageManagement zich eigenlijk tot PowerShellGet?

Voor meer informatie, bezoek de projectpagina PackageManagement.

Hoe verhoudt NuGet zich tot PowerShellGet?

De PowerShell Gallery is een aangepaste versie van de NuGet Gallery. PowerShellGet gebruikt NuGet-provider om te werken met NuGet-gebaseerde repositories zoals de PowerShell Gallery.

Je kunt PowerShellGet gebruiken tegen elke geldige NuGet-repository of bestandsdeling. Je hoeft alleen de repository toe te voegen door de Register-PSRepositoriy-cmdlet uit te voeren.

Yes.

Hoe verhoudt PackageManagement zich eigenlijk tot PowerShellGet? (Technische details)

Onder de motorkap maakt PowerShellGet sterk gebruik van de PackageManagement-infrastructuur.

Op de PowerShell-cmdlet-laag is Install-Module eigenlijk een dunne wrapper rond Install-Package -Provider PSModule.

Op de PackageManagement-pakketproviderlaag roept de PSModule-pakketprovider daadwerkelijk andere PackageManagement-pakketproviders aan. Bijvoorbeeld, wanneer je werkt met NuGet-gebaseerde galerieën (zoals de PowerShell Gallery), gebruikt de PSModule-pakketprovider de NuGet Package Provider om met de repository te werken.

Diagram van de PowerShellGet-architectuur

Figuur 1: PowerShellGet Architectuur

Wat is er nodig om PowerShellGet uit te voeren?

In het algemeen raden we aan om de nieuwste versie van de PowerShellGet-module te kiezen (let op: deze vereist .NET 4.5).

De PowerShellGet-module vereist PowerShell 3.0 of nieuwer.

Daarom vereist PowerShellGet een van de volgende besturingssystemen:

  • 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 vereist ook .NET Framework 4.5 of hoger. Zie .NET Framework voor ontwikkelaars installeren voor meer informatie.

Is het mogelijk om namen te reserveren voor pakketten die in de toekomst worden gepubliceerd?

Het is niet mogelijk om pakketnamen te squatten. Als je vindt dat een bestaand pakket de naam heeft aangenomen die beter bij jouw pakket past, probeer dan contact op te nemen met de eigenaar van het pakket. Als je binnen een paar weken geen reactie hebt ontvangen, kun je contact opnemen met de support en het PowerShell Gallery-team zal het onderzoeken.

Hoe claim ik eigendom van pakketten?

Hoe ga ik om met een pakketeigenaar die mijn pakketlicentie overtreedt?

We moedigen de PowerShell-gemeenschap aan om samen te werken aan het oplossen van geschillen tussen pakketeigenaren en de eigenaren van andere pakketten. We hebben een geschiloplossingsproces opgesteld dat we u vragen te volgen voordat PowerShellGallery.com beheerders tussenbeide komen.