Veelgestelde vragen over de PowerShell Gallery

Wat is een PowerShell-module?

Een PowerShell-module is een herbruikbaar pakket met enkele PowerShell-functionaliteit. Alles in PowerShell (functies, variabelen, DSC-resources, enzovoort) kan in modules worden verpakt. Modules zijn meestal mappen met specifieke bestandstypen die zijn opgeslagen op een specifiek pad. Er zijn een aantal verschillende typen PowerShell-modules beschikbaar.

Wat is een PowerShell-script?

Een PowerShell-script is een reeks opdrachten die zijn opgeslagen in een .ps1-bestand om hergebruik en delen mogelijk te maken. PowerShell-werkstromen zijn ook PowerShell-scripts, die een overzicht geven van een reeks taken en sequentiëren voor deze taken. Ga voor meer informatie naar Aan de slag met PowerShell Workflow.

Hoe verschillen PowerShell-scripts van PowerShell-modules?

Modules zijn over het algemeen beter voor delen, maar we maken het delen van scripts mogelijk, zodat u gemakkelijker werkstromen en scripts kunt bijdragen aan de community. Zie de volgende blogs voor meer informatie:

U moet een account registreren in de PowerShell Gallery voordat u pakketten naar de galerie kunt publiceren. Dit komt omdat voor het publiceren van pakketten een NuGetApiKey is vereist, die bij de registratie wordt verstrekt. Als u zich wilt registreren, gebruikt u uw persoonlijke, werk- of schoolaccount om u aan te melden bij de PowerShell Gallery. Een eenmalige registratieprocedure is vereist wanneer u zich voor de eerste keer aanmeldt. Daarna is uw NuGetApiKey beschikbaar op uw profielpagina.

Zodra u zich hebt geregistreerd in de galerie, gebruikt u de cmdlets Publish-Module of Publish-Script om uw pakket naar de galerie te publiceren. Ga voor meer informatie over het uitvoeren van deze cmdlets naar het tabblad Publiceren of lees de documentatie Publish-Module en Publish-Script .

U hoeft zich niet te registreren of u aan te melden bij de galerie om pakketten te installeren of op te slaan.

Het volledige foutbericht is: 'Kan aanvraag niet verwerken'. 'De opgegeven API-sleutel is ongeldig of heeft geen machtiging voor toegang tot het opgegeven pakket.' De externe server heeft een fout geretourneerd: (403) Verboden.'

Deze fout kan de volgende oorzaken hebben:

  • De opgegeven API-sleutel is ongeldig. Zorg ervoor dat u de geldige API-sleutel van uw account hebt opgegeven. Bekijk uw profielpagina om uw API-sleutel op te halen.
  • De opgegeven pakketnaam is niet uw eigendom. Als u hebt bevestigd dat uw API-sleutel juist is, bestaat er mogelijk al een pakket met dezelfde naam als het pakket dat u probeert te gebruiken. Het pakket is mogelijk niet vermeld door de eigenaar, in welk geval het niet wordt weergegeven in de zoekresultaten. Als u wilt bepalen of een pakket met dezelfde naam al bestaat, opent u een browser en navigeert u naar de detailpagina van het pakket: https://www.powershellgallery.com/packages/<packageName>. Als u bijvoorbeeld rechtstreeks naar https://www.powershellgallery.com/packages/pester navigeert, gaat u naar de pagina met details van de Pester-module, ongeacht of deze niet in de lijst staat of niet. Als een pakket met een conflicterende naam al bestaat en niet in de lijst staat, kunt u het volgende doen:
    • Selecteer een andere naam voor uw pakket.
    • Neem contact op met de eigenaren van het bestaande pakket.

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

Houd er rekening mee dat uw galerieaccount geen wijzigingen in uw primaire e-mailalias kan bevatten. Zie Microsoft Email-aliassen voor meer informatie.

Waarom zie ik niet alle galeriepakketten wanneer ik alle selectievakjes Categorie selecteer op het tabblad Pakketten?

Als u het selectievakje Categorie inschakelt, geeft u aan dat ik alle pakketten in deze categorie wil zien. Alleen de pakketten in de geselecteerde categorieën worden weergegeven. Op dezelfde manier, door alle selectievakjes categorie te selecteren, zegt u 'Ik wil alle pakketten in elke categorie zien'. Maar sommige pakketten in de galerie behoren niet tot een van de vermelde categorieën, dus ze worden niet weergegeven in de resultaten. Als u alle pakketten in de galerie wilt zien, schakelt u alle categorieën uit of selecteert u het tabblad Pakketten opnieuw.

Elk type PowerShell-module (scriptmodules, binaire modules of manifestmodules) kan worden gepubliceerd naar de galerie. Als u een module wilt publiceren, moet PowerShellGet er een aantal dingen over weten: de versie, beschrijving, auteur en hoe deze in licentie wordt gegeven. Deze informatie wordt gelezen als onderdeel van het publicatieproces uit het modulemanifestbestand (.psd1) of uit de waarde van de parameter LicenseUri van de cmdlet Publish-Module. Alle modules die naar de galerie worden gepubliceerd, moeten modulemanifesten hebben. Elke module die de volgende informatie in het manifest bevat, kan worden gepubliceerd naar de galerie:

  • Versie
  • Beschrijving
  • Auteur
  • Een URI naar de licentievoorwaarden van de module, als onderdeel van de sectie PrivateData van het manifest of in de parameter LicenseUri van de cmdlet Publish-Module .

Hoe kan ik een modulemanifest met de juiste indeling maken?

De eenvoudigste manier om een modulemanifest te maken, is door de cmdlet New-ModuleManifest uit te voeren. In PowerShell 5.0 of hoger genereert New-ModuleManifest een correct opgemaakt modulemanifest met lege velden voor nuttige metagegevens zoals ProjectUri, LicenseUri en Tags. Vul de lege waarden in of gebruik het gegenereerde manifest als voorbeeld van de juiste opmaak.

Als u wilt controleren of alle vereiste metagegevensvelden correct zijn ingevuld, gebruikt u de cmdlet Test-ModuleManifest .

Gebruik de cmdlet Update-ModuleManifest om de velden van het modulemanifest-bestand bij te werken.

Wat zijn de vereisten voor het publiceren van een script naar de galerie?

Elk type PowerShell-script (scripts of werkstromen) kan worden gepubliceerd naar de galerie. Als u een script wilt publiceren, moet PowerShellGet een aantal dingen over het script weten: de versie, beschrijving, auteur en hoe het in licentie wordt gegeven. Deze informatie wordt gelezen als onderdeel van het publicatieproces uit de sectie PSScriptInfo van het scriptbestand of uit de waarde van de parameter LicenseUri van de cmdlet Publish-Script. Alle scripts die naar de galerie worden gepubliceerd, moeten metagegevensgegevens bevatten. Elk script met de volgende informatie in de sectie PSScriptInfo kan worden gepubliceerd naar de galerie:

  • Versie
  • Beschrijving
  • Auteur
  • Een URI naar de licentievoorwaarden van het script, als onderdeel van de sectie PSScriptInfo van het script of in de parameter LicenseUri van de cmdlet Publish-Script .

Hoe kan ik zoeken?

Typ wat u zoekt in het tekstvak. Als u bijvoorbeeld modules wilt zoeken die betrekking hebben op Azure SQL, typt u 'azure sql'. Onze zoekmachine zoekt naar deze trefwoorden in alle gepubliceerde pakketten, inclusief titels, beschrijvingen en metagegevens. Vervolgens worden op basis van een gewogen kwaliteitsscore de dichtstbijzijnde overeenkomsten weergegeven. U kunt ook zoeken op een specifiek veld met behulp van de syntaxis field:"value" in de zoekquery voor de volgende velden:

  • Tags
  • Functions
  • Cmdlets
  • DscResources
  • PowerShellVersion

Als u bijvoorbeeld zoekt naar PowerShellVersion:"2.0", worden alleen resultaten weergegeven die compatibel zijn met PowerShellVersion 2.0 (op basis van hun module/scriptmanifest).

Hoe kan ik een correct opgemaakt scriptbestand maken?

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

Als u wilt controleren of alle vereiste metagegevensvelden correct zijn ingevuld, gebruikt u de cmdlet Test-ScriptFileInfo .

Gebruik de cmdlet Update-ScriptFileInfo om de velden met metagegevens van het script bij te werken.

Welke andere typen PowerShell-modules bestaan er?

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

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

Alle modules in de galerie 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 de woordmodule op deze pagina naar de modulemap die deze bestanden bevat.

Hoe verhoudt PackageManagement zich tot PowerShellGet? (Antwoord op hoog niveau)

PackageManagement is een algemene interface voor het werken met elke pakketbeheerder. Of u nu te maken hebt met PowerShell-modules, MSI's, Ruby-gems, NuGet-pakketten of Perl-modules, u moet de opdrachten van PackageManagement (Find-Package en Install-Package) kunnen gebruiken om ze te zoeken en te installeren. PackageManagement doet dit door een pakketprovider te hebben voor elke pakketbeheerder die wordt aangesloten op PackageManagement. Providers doen al het werkelijke werk; ze halen inhoud op uit opslagplaatsen en installeren de inhoud lokaal. Vaak verpakken pakketproviders de bestaande hulpprogramma's voor pakketbeheer voor een bepaald pakkettype.

PowerShellGet is de pakketbeheerder voor PowerShell-pakketten. Er is een PSModule-pakketprovider die PowerShellGet-functionaliteit beschikbaar maakt via PackageManagement. Daarom kunt u Install-Module uitvoeren of Install-Package -Provider PSModule een module installeren vanuit de PowerShell Gallery. Bepaalde PowerShellGet-functies, waaronder Update-Module en Publish-Module, zijn niet toegankelijk via PackageManagement-opdrachten.

Kortom, PowerShellGet is alleen gericht op het hebben van een premium pakketbeheerervaring voor PowerShell-inhoud. PackageManagement is gericht op het beschikbaar maken van alle pakketbeheerervaringen via één algemene set hulpprogramma's. Als u dit antwoord niet tevreden vindt, vindt u een lang antwoord onderaan dit document, in de sectie Hoe verhoudt PackageManagement zich eigenlijk tot PowerShellGet?.

Ga voor meer informatie naar de projectpagina PackageManagement.

Hoe verhoudt NuGet zich tot PowerShellGet?

De PowerShell Gallery is een gewijzigde versie van de NuGet-galerie. PowerShellGet maakt gebruik van de NuGet-provider om te werken met opslagplaatsen op basis van NuGet, zoals de PowerShell Gallery.

U kunt PowerShellGet gebruiken voor elke geldige NuGet-opslagplaats of bestandsshare. U hoeft alleen de opslagplaats toe te voegen door de cmdlet Register-PSRepository uit te voeren.

Betekent dit dat ik NuGet.exe kan gebruiken om met de galerie te werken?

Ja.

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

PowerShellGet maakt veel gebruik van de Infrastructuur voor Pakketbeheer.

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

Op de pakketproviderlaag PackageManagement roept de pakketprovider PSModule daadwerkelijk andere Pakketproviders packageManagement aan. Als u bijvoorbeeld werkt met galerieën op basis van NuGet (zoals de PowerShell Gallery), gebruikt de psModule-pakketprovider de NuGet-pakketprovider om met de opslagplaats te werken.

Diagram van de PowerShellGet-architectuur

Afbeelding 1: PowerShellGet-architectuur

Wat is er vereist om PowerShellGet uit te voeren?

Over het algemeen raden we u aan de nieuwste versie van de PowerShellGet-module te kiezen (hiervoor is .NET 4.5 vereist).

Voor de PowerShellGet-module is PowerShell 3.0 of hoger vereist.

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 De .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 kraken. Als u denkt dat een bestaand pakket de naam heeft die meer bij uw pakket past, kunt u contact opnemen met de eigenaar van het pakket. Als u binnen een paar weken geen antwoord hebt ontvangen, kunt u contact opnemen met de ondersteuning. Het PowerShell Gallery team kijkt hiernaar.

Hoe kan ik het eigendom van pakketten claimen?

Hoe kan ik een pakketeigenaar die mijn pakketlicentie schendt?

We raden de PowerShell-community aan om samen te werken om eventuele geschillen op te lossen die zich kunnen voordoen tussen pakketeigenaren en de eigenaren van andere pakketten. We hebben een geschiloplossingsproces opgesteld dat we u vragen te volgen voordat PowerShellGallery.com beheerders intercede.