Veelgestelde vragen over de PowerShell Gallery

Wat is een PowerShell-module?

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

Wat is een PowerShell-script?

Een PowerShell-script is een reeks opdrachten die zijn opgeslagen in een .ps1 om hergebruik en delen mogelijk te maken. PowerShell-werkstromen zijn ook PowerShell-scripts, die een overzicht geven van een set taken en sequenctie bieden 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 stellen het delen van scripts in staat om het u gemakkelijker te maken werkstromen en scripts bij te dragen aan de community. Zie de volgende blogs voor meer informatie:

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

Nadat 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 naar het tabblad Publiceren of lees de documentatie Publish-Module and Publish-Script voor meer informatie over het uitvoeren van deze cmdlets.

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) Forbidden.

Deze fout kan om de volgende redenen optreden:

  • 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 van u. 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 weergegeven door de eigenaar. In dat geval wordt het niet weergegeven in de zoekresultaten. Als u wilt bepalen of er al een pakket met dezelfde naam bestaat, opent u een browser en navigeert u naar de pagina met details van het pakket: https://www.powershellgallery.com/packages/<packageName>. Als u bijvoorbeeld rechtstreeks naar navigeert https://www.powershellgallery.com/packages/pester , gaat u naar de detailpagina van de ModuleIerer, ongeacht of deze niet in de lijst is geplaatst. Als er al een pakket met een conflicterende naam bestaat en niet wordt genoemd, 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 kan me wel gisteren aanmelden?

Houd er rekening mee dat uw galerieaccount geen wijzigingen in uw primaire e-mailalias mogelijk maakt. Zie Microsoft Email Aliases (E-mailaliassen van Microsoft) voor meer informatie.

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

Als u het selectievakje Categorie incheckt, wordt de tekst 'I would like to see all packages in this category' (Ik wil alle pakketten in deze categorie zien) vermeld. Alleen de pakketten in de geselecteerde categorieën worden weergegeven. Als u dus alle selectievakjes Categorie selecteert, 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, zodat ze niet worden weergegeven in de resultaten. Als u alle pakketten in de galerie wilt zien, moet u alle categorieën uitvinken of het tabblad Pakketten opnieuw selecteren.

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

  • Versie
  • Beschrijving
  • Auteur
  • Een URI voor 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 correct opgemaakt modulemanifest 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 gegevens in of gebruik het gegenereerde manifest als voorbeeld van de juiste opmaak.

Gebruik de cmdlet Test-ModuleManifest om te controleren of alle vereiste metagegevensvelden correct zijn ingevuld.

Als u de bestandsvelden van het modulemanifest wilt bijwerken, gebruikt u de cmdlet Update-ModuleManifest .

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

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

  • Versie
  • Beschrijving
  • Auteur
  • Een URI voor 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 in het tekstvak wat u zoekt. Als u bijvoorbeeld modules wilt zoeken die zijn gerelateerd aan Azure SQL typt u 'azure sql'. Onze zoekmachine zoekt naar deze trefwoorden in alle gepubliceerde pakketten, inclusief titels, beschrijvingen en verschillende 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

Wanneer 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 correct opgemaakt scriptbestand 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 bestanden gewoon in of gebruik het gegenereerde scriptbestand als voorbeeld van de juiste opmaak.

Gebruik de cmdlet Test-ScriptFileInfo om te controleren of alle vereiste metagegevensvelden correct zijn ingevuld.

Als u de metagegevensvelden van het script wilt bijwerken, gebruikt u de cmdlet Update-ScriptFileInfo .

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 is één manier om over 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 daadwerkelijk het werk 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 modulemanifests en de meeste van deze modules bevatten scriptmodulebestanden of binaire modulebestanden. De term module kan verwarrend zijn vanwege deze verschillende betekenis. Tenzij expliciet anders aangegeven, verwijzen alle toepassingen van de woordmodule op deze pagina naar de modulemap met deze bestanden.

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

PackageManagement is een algemene interface voor het werken met pakketbeheer. Uiteindelijk, of u nu werkt met PowerShell-modules, MPI's, Ruby gems, NuGet-pakketten of Perl-modules, moet u 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 elk pakketbeheer dat wordt aangesloten op PackageManagement. Providers doen al het werkelijke werk; Ze halen inhoud op uit opslagplaatsen en installeren de inhoud lokaal. Vaak verpakken pakketproviders gewoon de bestaande pakketbeheerprogramma's voor een bepaald pakkettype.

PowerShellGet is het pakketbeheer voor PowerShell-pakketten. Er is een PSModule-pakketprovider die PowerShellGet-functionaliteit beschikbaar maakt via PackageManagement. Daarom kunt u Install-Module uitvoeren of een Install-Package -Provider PSModule module installeren vanuit de PowerShell Gallery. Bepaalde PowerShellGet-functionaliteit, waaronder Update-Module en Publish-Module, is 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 onoptbaar vindt, vindt u onder aan dit document een lang antwoord in de sectie Hoe verhoudt PackageManagement zich 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 Gallery. PowerShellGet maakt gebruik van de NuGet-provider om te werken met op NuGet gebaseerde opslagplaatsen, zoals de PowerShell Gallery.

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

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

Ja.

Hoe verhoudt PackageManagement zich tot PowerShellGet? (Technische details)

Achter de basis maakt PowerShellGet intensief gebruik van de PackageManagement-infrastructuur.

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

In de pakketproviderlaag PackageManagement roept de pakketprovider PSModule daadwerkelijk aan bij andere PackageManagement-pakketproviders. Als u bijvoorbeeld werkt met galerieën op basis van NuGet (zoals de PowerShell Gallery), gebruikt de provider van het PSModule-pakket de NuGet-pakketprovider om met de opslagplaats te werken.

Diagram van de PowerShellGet-architectuur

Afbeelding 1: PowerShellGet-architectuur

Wat is vereist om PowerShellGet uit te voeren?

Over het algemeen wordt u aangeraden 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 Install the .NET Framework for developers (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 verpakken. 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 reactie hebt ontvangen, kunt u contact opnemen met ondersteuning en het PowerShell Gallery team zal ernaar kijken.

Hoe kan ik eigendom van pakketten claimen?

Hoe kan ik met een pakketeigenaar die mijn pakketlicentie schendt?

We raden de PowerShell-community aan om samen te werken om eventuele conflicten op te lossen die kunnen ontstaan tussen pakketeigenaren en de eigenaren van andere pakketten. We hebben een proces voor het oplossen van conflicten ontwikkeld dat we u vragen te volgen voordat PowerShellGallery.com-beheerders intercede.