Skapa och publicera ett objekt
Här PowerShell-galleriet du publicera och dela stabila PowerShell-moduler, skript och DSC-resurser (Desired State Configuration) med den bredare PowerShell-användar communityn.
Den här artikeln beskriver mekanismer och viktiga steg för att förbereda ett skript eller en modul och publicera det på PowerShell-galleriet. Vi rekommenderar starkt att du granskar publiceringsriktlinjerna för att förstå hur du säkerställer att de objekt som du publicerar godkänns mer av PowerShell-galleriet användare.
Minimikraven för att publicera ett objekt till PowerShell-galleriet är:
- Ha ett PowerShell-galleriet och DEN API-nyckel som är associerad med det
- Se till att nödvändiga metadata finns i ditt objekt
- Använd förvalideringsverktygen för att se till att objektet är redo att publiceras
- Publicera objektet till PowerShell-galleriet med kommandona Publish-Module och Publish-Script
- Svara på frågor eller frågor om ditt objekt
Den PowerShell-galleriet accepterar PowerShell-moduler och PowerShell-skript. När vi refererar till skript syftar vi på ett PowerShell-skript som är en enda fil och inte en del av en större modul.
PowerShell-galleriet och API-nyckel
Information om hur PowerShell-galleriet ditt konto finns i Skapa PowerShell-galleriet konto.
När du har skapat ett konto kan du hämta DEN API-nyckel som behövs för att publicera ett objekt. När du har loggat in med kontot visas ditt användarnamn överst på PowerShell-galleriet i stället för Registrera. Om du klickar på ditt användarnamn kommer du till sidan Mitt konto, där du hittar API-nyckeln.
Viktigt
API-nyckeln måste behandlas lika säkert som din inloggning och ditt lösenord. Med den här nyckeln kan du eller någon annan uppdatera alla objekt som du äger i PowerShell-galleriet. Vi rekommenderar att du uppdaterar nyckeln regelbundet, vilket kan göras med hjälp av Återställ nyckel på sidan Mitt konto.
Metadata som krävs för objekt som publicerats till PowerShell-galleriet
I PowerShell-galleriet information till gallerianvändare som tagits från metadatafält som ingår i skriptet eller modulmanifestet. Att skapa eller ändra objekt för publicering till PowerShell-galleriet har en liten uppsättning krav för information som anges i objektmanifestet. Vi rekommenderar starkt att du går igenom avsnittet Objektmetadata i publiceringsriktlinjerna för att lära dig hur du ger användarna den bästa informationen med dina objekt.
Cmdletarna New-ModuleManifest och New-ScriptFileInfo skapar manifestmallen åt dig, med platshållare för alla manifestelement.
Båda manifesten har två avsnitt som är viktiga för publicering, primärnyckeldata och PSData-området i PrivateData. Primärnyckeldata i ett PowerShell-modulmanifest är allt utanför avsnittet PrivateData. Uppsättningen primära nycklar är kopplad till den version av PowerShell som används och odefinierade stöds inte. PrivateData stöder tillägg av nya nycklar, så de element som är PowerShell-galleriet finns i PSData.
Manifestelement som är viktigast att fylla i för objekt som du publicerar i PowerShell-galleriet är:
- Skript- eller modulnamn – de hämtas från namnen på .PS1 för ett skript, eller . PSD1 för en modul.
- Version – det här är en obligatorisk primärnyckel. Formatet bör följa Riktlinjerna för SemVer. Mer information finns i Metodtips.
- Författare – det här är en obligatorisk primärnyckel och innehåller det namn som ska associeras med objektet. Se Författare och ägare nedan.
- Beskrivning – det här är en obligatorisk primärnyckel som används för att kortfattat förklara vad det här objektet gör och eventuella krav för att använda den
- ProjectURI – det här är ett starkt rekommenderat URI-fält i PSData som innehåller en länk till en Github-lagringsplats eller en liknande plats där du håller på att utveckla objektet
- Taggar – det är en stark rekommendation att tagga ditt paket baserat på dess kompatibilitet med PSEditions och plattformar. Mer information finns i Publiceringsriktlinjer.
Författare och ägare av PowerShell-galleriet objekt är relaterade begrepp, men matchar inte alltid. Objektägare är användare med PowerShell-galleriet-konton som har behörighet att underhålla objektet. Det kan finnas många ägare som kan uppdatera alla objekt. Ägaren är bara tillgänglig från PowerShell-galleriet och går förlorad om objektet kopieras från ett system till ett annat. Författare är en sträng som är inbyggd i manifestdata, så den är alltid en del av objektet. Rekommendationerna för objekt från Microsoft-produkter är:
- Ha flera ägare, där minst en är namnet på teamet som producerar objektet
- Låt författaren vara ett välkänt teamnamn (till exempel Azure SDK-team) eller Microsoft Corporation
Verifiera ditt objekt i förväg
Det finns några verktyg som du måste köra mot koden innan du publicerar objektet på PowerShell-galleriet:
- PowerShell Script Analyzer, som finns i PowerShell-galleriet
- För moduler, Test-ModuleManifest som är en del av PowerShell
- För skript, Test-ScriptFileInfo som medföljer PowerShell Get
PowerShell Script Analyzer är ett analysverktyg för statisk kod som genomsöker koden för att säkerställa att den uppfyller grundläggande riktlinjer för PowerShell-kodning. Det här verktyget identifierar vanliga och kritiska problem i koden och bör köras regelbundet under utvecklingen för att hjälpa dig att förbereda ditt objekt för publicering. PowerShell Script Analyzer innehåller en lista över problem som identifierats som Fel, Varning och Information. Alla fel måste åtgärdas innan du publicerar till PowerShell-galleriet. Varningar måste granskas och de flesta bör åtgärdas. PowerShell Script Analyzer körs varje gång ett objekt publiceras eller uppdateras i PowerShell-galleriet. Galleriets driftteam kontaktar objektägare för att åtgärda fel som hittas.
Om manifestinformationen i ditt objekt inte kan läsas av PowerShell-galleriet-infrastrukturen kommer du inte att kunna publicera. Test-ModuleManifest fångar upp vanliga problem som gör att modulen inte kan användas när den installeras. Den måste köras för varje modul innan den publiceras på PowerShell-galleriet.
På samma sätt verifierar Test-ScriptFileInfo metadata i ett skript och måste köras på varje skript (publicerat separat från en modul) innan det publiceras till PowerShell-galleriet.
Publicera objekt
Du måste använda Publish-Script eller Publish-Module för att publicera objekt till PowerShell-galleriet. Båda dessa kommandon kräver:
- Sökvägen till objektet som du ska publicera. För en modul använder du mappen med namnet för din modul. Om du anger en mapp som innehåller flera versioner av samma modul måste du ange RequiredVersion.
- En Nuget API-nyckel. Det här är API-nyckeln som finns på sidan Mitt konto på PowerShell-galleriet.
De flesta av de andra alternativen på kommandoraden bör finnas i manifestdata för det objekt som du publicerar, så du bör inte behöva ange dem i kommandot.
För att undvika fel rekommenderar vi starkt att du provar kommandona med hjälp av -WhatIf -Verbose, innan du publicerar. Detta sparar mycket tid, eftersom varje gång du publicerar till PowerShell-galleriet måste du uppdatera versionsnumret i manifestavsnittet för objektet.
Några exempel är:
Publish-Module -Path ".\MyModule" -NugetAPIKey "GUID" -WhatIf -VerbosePublish-Script -Path ".\MyScriptFile.PS1" -NugetAPIKey "GUID" -WhatIf -Verbose
Granska utdata noggrant och om du inte ser några fel eller varningar upprepar du kommandot utan -WhatIf.
Alla objekt som publiceras till PowerShell-galleriet genomsöks efter virus och analyseras med hjälp av PowerShell Script Analyzer. Eventuella problem som uppstår vid den tidpunkten skickas tillbaka till utgivaren för lösning.
När du har publicerat ett objekt till PowerShell-galleriet behöver du hålla utkik efter feedback om ditt objekt.
- Se till att du övervakar den e-postadress som är kopplad till det konto som används för att publicera. Användare och PowerShell-galleriet ger feedback via det kontot, inklusive problem från PSSA- eller antivirusgenomsökningar. Om e-postkontot är ogiltigt, eller om allvarliga problem rapporteras till kontot och lämnas olösta under en längre tid, kan objekt betraktas som övergivna och tas bort från PowerShell-galleriet enligt beskrivningen i våra användningsvillkor.