Vanliga frågor och svar om PowerShell-galleriet

Vad är en PowerShell-modul?

En PowerShell-modul är ett återanvändbart paket som innehåller vissa PowerShell-funktioner. Allt i PowerShell (funktioner, variabler, DSC-resurser osv.) kan paketeras i moduler. Moduler är vanligtvis mappar som innehåller specifika typer av filer som lagras på en specifik sökväg. Det finns några olika typer av PowerShell-moduler där ute.

Vad är ett PowerShell-skript?

Ett PowerShell-skript är en serie kommandon som lagras i en .ps1-fil för att aktivera återanvändning och delning. PowerShell-arbetsflöden är också PowerShell-skript, som beskriver en uppsättning uppgifter och ger sekvensering för dessa uppgifter. Mer information finns i Komma igång med PowerShell Workflow.

Hur skiljer sig PowerShell-skript från PowerShell-moduler?

Moduler är vanligtvis bättre för delning, men vi aktiverar skriptdelning för att göra det enklare för dig att bidra med arbetsflöden och skript till communityn. Mer information finns i följande bloggar:

Hur publicerar jag till PowerShell-galleriet?

Du måste registrera ett konto i PowerShell-galleriet innan du kan publicera paket till galleriet. Det beror på att publiceringspaket kräver en NuGetApiKey, som tillhandahålls vid registreringen. Om du vill registrera dig använder du ditt personliga konto, ditt arbets- eller skolkonto för att logga in på PowerShell-galleriet. En engångsregistreringsprocess krävs när du loggar in för första gången. Därefter är din NuGetApiKey tillgänglig på din profilsida.

När du har registrerat dig i galleriet använder du cmdletarna Publish-Module eller Publish-Script för att publicera paketet i galleriet. Mer information om hur du kör dessa cmdletar finns på fliken Publicera eller i dokumentationen Publicera modul och Publicera skript .

Du behöver inte registrera dig eller logga in i galleriet för att installera eller spara paket.

Jag fick "Det gick inte att bearbeta begäran". när jag försökte publicera ett paket till PowerShell-galleriet. Vad innebär det?

Det fullständiga felmeddelandet är: "Det gick inte att bearbeta begäran." "Den angivna API-nyckeln är ogiltig eller har inte behörighet att komma åt det angivna paketet." Fjärrservern returnerade ett fel: (403) Förbjuden."

Det här felet kan inträffa av följande skäl:

  • Den angivna API-nyckeln är ogiltig. Kontrollera att du har angett den giltiga API-nyckeln från ditt konto. Om du vill hämta DIN API-nyckel kan du visa din profilsida.
  • Det angivna paketnamnet ägs inte av dig. Om du har bekräftat att DIN API-nyckel är korrekt kan det redan finnas ett paket med samma namn som det du försöker använda. Paketet kan ha tagits bort från listan av ägaren, i så fall visas det inte i några sökresultat. Om du vill ta reda på om ett paket med samma namn redan finns öppnar du en webbläsare och navigerar till paketets informationssida: https://www.powershellgallery.com/packages/<packageName>. Om du till exempel navigerar direkt till kommer du till https://www.powershellgallery.com/packages/pester Informationssidan för Pester-modulen, oavsett om den är olistad eller inte. Om ett paket med ett namn i konflikt redan finns och inte finns med i listan kan du:
    • Välj ett annat namn för paketet.
    • Kontakta ägarna till det befintliga paketet.

Varför kan jag inte logga in med mitt personliga konto, men jag kan logga in igår?

Tänk på att ditt gallerikonto inte har plats för ändringar i ditt primära e-postalias. Mer information finns i Microsoft Email Alias.

Varför ser jag inte alla galleripaket när jag markerar kryssrutorna Kategori på fliken Paket?

Genom att markera kryssrutan Kategori anger du "Jag skulle vilja se alla paket i den här kategorin". Endast paketen i de valda kategorierna visas. Så på samma sätt, genom att markera alla kategori-kryssrutor, anger du "Jag skulle vilja se alla paket i valfri kategori." Men vissa paket i galleriet tillhör inte någon av kategorierna i listan, så de visas inte i resultatet. Om du vill se alla paket i galleriet avmarkerar du alla kategorier eller väljer fliken Paket igen.

Vilka är kraven för att publicera en modul till PowerShell-galleriet?

Alla typer av PowerShell-modul (skriptmoduler, binära moduler eller manifestmoduler) kan publiceras i galleriet. För att kunna publicera en modul behöver PowerShellGet veta några saker om den – version, beskrivning, författare och hur den är licensierad. Den här informationen läses som en del av publiceringsprocessen från modulmanifestfilen (.psd1) eller från värdet för parametern LicenseUri för cmdleten Publish-Module. Alla moduler som publiceras i galleriet måste ha modulmanifest. Alla moduler som innehåller följande information i manifestet kan publiceras i galleriet:

  • Version
  • Beskrivning
  • Författare
  • En URI till licensvillkoren för modulen, antingen som en del av avsnittet PrivateData i manifestet eller i parametern LicenseUri i cmdleten Publish-Module .

Hur gör jag för att skapa ett korrekt formaterat modulmanifest?

Det enklaste sättet att skapa ett modulmanifest är att köra cmdleten New-ModuleManifest . I PowerShell 5.0 eller senare genererar New-ModuleManifest ett korrekt formaterat modulmanifest med tomma fält för användbara metadata som ProjectUri, LicenseUri och Taggar. Fyll bara i blankstegen eller använd det genererade manifestet som ett exempel på korrekt formatering.

Om du vill kontrollera att alla obligatoriska metadatafält har fyllts i korrekt använder du cmdleten Test-ModuleManifest .

Om du vill uppdatera modulmanifestfilfälten använder du cmdleten Update-ModuleManifest .

Vilka är kraven för att publicera ett skript till galleriet?

Alla typer av PowerShell-skript (skript eller arbetsflöden) kan publiceras i galleriet. Om du vill publicera ett skript måste PowerShellGet veta några saker om det – version, beskrivning, författare och hur det är licensierat. Den här informationen läses som en del av publiceringsprocessen från skriptfilens PSScriptInfo-avsnitt, eller från värdet för parametern LicenseUri för cmdleten Publish-Script. Alla skript som publiceras i galleriet måste ha metadatainformation. Alla skript som innehåller följande information i avsnittet PSScriptInfo kan publiceras i galleriet:

  • Version
  • Beskrivning
  • Författare
  • En URI till licensvillkoren för skriptet, antingen som en del av avsnittet PSScriptInfo i skriptet eller i parametern LicenseUri i cmdleten Publish-Script .

Hur gör jag för att sökning?

Skriv det du letar efter i textrutan. Om du till exempel vill hitta moduler som är relaterade till Azure SQL skriver du bara "azure sql". Vår sökmotor söker efter dessa nyckelord i alla publicerade paket, inklusive rubriker, beskrivningar och metadata. Baserat på en viktad kvalitetspoäng visas sedan de närmaste matchningarna. Du kan också söka efter specifika fält med hjälp av syntaxen field:"value" i sökfrågan för följande fält:

  • Taggar
  • Functions
  • Cmdletar
  • DscResources
  • PowerShellVersion

När du till exempel söker efter PowerShellVersion:"2.0" visas endast resultat som är kompatibla med PowerShellVersion 2.0 (baserat på deras modul-/skriptmanifest).

Hur gör jag för att skapa en korrekt formaterad skriptfil?

Det enklaste sättet att skapa en korrekt formaterad skriptfil är att köra cmdleten New-ScriptFileInfo . I PowerShell 5.0 genererar New-ScriptFileInfo en korrekt formaterad skriptfil med tomma fält för användbara metadata som ProjectUri, LicenseUri och Taggar. Fyll bara i blankstegen eller använd den genererade skriptfilen som ett exempel på korrekt formatering.

Om du vill kontrollera att alla obligatoriska metadatafält har fyllts i korrekt använder du cmdleten Test-ScriptFileInfo .

Om du vill uppdatera skriptmetadatafälten använder du cmdleten Update-ScriptFileInfo .

Vilka andra typer av PowerShell-moduler finns?

Termen PowerShell-modul refererar också till de filer som implementerar faktiska funktioner. Skriptmodulfiler (.psm1) innehåller PowerShell-kod. Binära modulfiler (.dll) innehåller kompilerad kod.

Här är ett sätt att tänka på det: mappen som kapslar in modulen är modulmappen. Modulmappen kan innehålla ett modulmanifest (.psd1) som beskriver innehållet i mappen. De filer som faktiskt utför arbetet är skriptmodulfilerna (.psm1) och de binära modulfilerna (.dll). DSC-resurser finns i en specifik undermapp och implementeras som skriptmodulfiler eller binära modulfiler.

Alla moduler i galleriet innehåller modulmanifest och de flesta av dessa moduler innehåller skriptmodulfiler eller binära modulfiler. Termmodulen kan vara förvirrande på grund av dessa olika betydelser. Om inget annat uttryckligen anges refererar all användning av ordmodulen på den här sidan till modulmappen som innehåller dessa filer.

Hur relaterar PackageManagement till PowerShellGet? (Svar på hög nivå)

PackageManagement är ett vanligt gränssnitt för att arbeta med alla pakethanterare. Så småningom, oavsett om du hanterar PowerShell-moduler, MSIs, Ruby Gems, NuGet-paket eller Perl-moduler, bör du kunna använda PackageManagements kommandon (Find-Package och Install-Package) för att hitta och installera dem. PackageManagement gör detta genom att ha en paketleverantör för varje pakethanterare som ansluts till PackageManagement. Leverantörer utför allt det faktiska arbetet; de hämtar innehåll från lagringsplatser och installerar innehållet lokalt. Ofta omsluter paketleverantörerna bara de befintliga pakethanterarverktygen för en viss pakettyp.

PowerShellGet är pakethanteraren för PowerShell-paket. Det finns en PSModule-paketprovider som exponerar PowerShellGet-funktioner via PackageManagement. Därför kan du antingen köra Install-Module eller Install-Package -Provider PSModule installera en modul från PowerShell-galleriet. Vissa PowerShellGet-funktioner, inklusive Update-Module och Publish-Module, kan inte nås via PackageManagement-kommandon.

Sammanfattningsvis fokuserar PowerShellGet enbart på att ha en premium-pakethanteringsupplevelse för PowerShell-innehåll. PackageManagement fokuserar på att exponera alla pakethanteringsupplevelser via en allmän uppsättning verktyg. Om du tycker att det här svaret är otillfredsställande finns det ett långt svar längst ned i det här dokumentet i avsnittet Hur relaterar PackageManagement egentligen till PowerShellGet?

Mer information finns på projektsidan PackageManagement.

Hur relaterar NuGet till PowerShellGet?

PowerShell-galleriet är en ändrad version av NuGet-galleriet. PowerShellGet använder NuGet-providern för att arbeta med NuGet-baserade lagringsplatser som PowerShell-galleriet.

Du kan använda PowerShellGet mot en giltig NuGet-lagringsplats eller filresurs. Du behöver bara lägga till lagringsplatsen genom att köra cmdleten Register-PSRepository .

Betyder det att jag kan använda NuGet.exe för att arbeta med galleriet?

Ja.

Hur relaterar PackageManagement egentligen till PowerShellGet? (Teknisk information)

Under huven utnyttjar PowerShellGet kraftigt PackageManagement-infrastrukturen.

I PowerShell-cmdletlagret är Install-Module faktiskt en tunn omslutning runt Install-Package -Provider PSModule.

På packageManagement-paketproviderlagret anropar PSModule-paketprovidern faktiskt andra PackageManagement-paketleverantörer. När du till exempel arbetar med NuGet-baserade gallerier (till exempel PowerShell-galleriet) använder PSModule-paketprovidern NuGet-paketprovidern för att arbeta med lagringsplatsen.

Diagram över PowerShellGet-arkitekturen

Bild 1: PowerShellGet-arkitektur

Vad krävs för att köra PowerShellGet?

I allmänhet rekommenderar vi att du väljer den senaste versionen av PowerShellGet-modulen (observera att den kräver .NET 4.5).

PowerShellGet-modulen kräver PowerShell 3.0 eller senare.

Det innebär att PowerShellGet kräver något av följande operativsystem:

  • 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 kräver också .NET Framework 4.5 eller senare. Mer information finns i Installera .NET Framework för utvecklare.

Är det möjligt att reservera namn för paket som kommer att publiceras i framtiden?

Det går inte att knäböja paketnamn. Om du känner att ett befintligt paket har tagit namnet som passar ditt paket mer kan du prova att kontakta paketets ägare. Om du inte fick svar inom ett par veckor kan du kontakta supporten så kommer PowerShell-galleriet-teamet att titta på det.

Hur gör jag för att anspråk på ägarskap för paket?

Hur gör jag för att hantera en paketägare som bryter mot min paketlicens?

Vi uppmuntrar PowerShell-communityn att samarbeta för att lösa eventuella tvister som kan uppstå mellan paketägare och ägare av andra paket. Vi har skapat en tvistelösningsprocess som vi ber dig att följa innan PowerShellGallery.com administratörer inleder.