Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En modul är en uppsättning relaterade Windows PowerShell-funktioner, grupperade som en bekväm enhet (sparas vanligtvis i en enda katalog). Genom att definiera en uppsättning relaterade skriptfiler, sammansättningar och relaterade resurser som en modul kan du referera till, läsa in, spara och dela koden mycket enklare än du annars skulle göra.
Huvudsyftet med en modul är att tillåta modularisering (dvs. återanvändning och abstraktion) av Windows PowerShell-kod. Det mest grundläggande sättet att skapa en modul är till exempel att helt enkelt spara ett Windows PowerShell-skript som en .psm1
fil. På så sätt kan du styra (dvs. göra offentliga eller privata) funktionerna och variablerna i skriptet. Om du sparar skriptet som en .psm1
fil kan du också styra omfånget för vissa variabler. Slutligen kan du också använda cmdletar som Install-Module för att organisera, installera och använda skriptet som byggstenar för större lösningar.
Modulkomponenter och -typer
En modul består av fyra grundläggande komponenter:
Någon form av kodfil – vanligtvis antingen ett PowerShell-skript eller en hanterad cmdlet-sammansättning.
Allt annat som kodfilen ovan kan behöva, till exempel ytterligare sammansättningar, hjälpfiler eller skript.
En manifestfil som beskriver ovanstående filer samt lagrar metadata som information om författare och versionshantering.
En katalog som innehåller allt innehåll ovan och finns där PowerShell rimligen kan hitta det.
Anmärkning
Ingen av dessa komponenter är i sig själva nödvändiga. En modul kan till exempel tekniskt sett bara vara ett skript som lagras i en
.psm1
fil. Du kan också ha en modul som bara är en manifestfil, som huvudsakligen används i organisationssyfte. Du kan också skriva ett skript som dynamiskt skapar en modul och därför inte behöver någon katalog för att lagra något i. I följande avsnitt beskrivs vilka typer av moduler du kan få genom att blanda och matcha de olika möjliga delarna i en modul tillsammans.
Skriptmoduler
Som namnet antyder är en skriptmodul en fil (.psm1
) som innehåller en giltig Windows PowerShell-kod. Skriptutvecklare och administratörer kan använda den här typen av modul för att skapa moduler vars medlemmar innehåller funktioner, variabler med mera. I grunden är en skriptmodul helt enkelt ett Windows PowerShell-skript med ett annat tillägg som gör att administratörer kan använda import-, export- och hanteringsfunktioner på den.
Dessutom kan du använda en manifestfil för att inkludera andra resurser i modulen, till exempel datafiler, andra beroende moduler eller körningsskript. Manifestfiler är också användbara för att spåra metadata, till exempel redigerings- och versionsinformation.
Slutligen måste en skriptmodul, precis som alla andra moduler som inte skapas dynamiskt, sparas i en mapp som PowerShell rimligen kan identifiera. Detta är vanligtvis på PowerShell-modulsökvägen. men om det behövs kan du uttryckligen beskriva var modulen är installerad. Mer information finns i Skriva en PowerShell-skriptmodul.
Binära moduler
En binär modul är en .NET Framework-sammansättning (.dll
) som innehåller kompilerad kod, till exempel C#.
Cmdlet-utvecklare kan använda den här typen av modul för att dela cmdletar, leverantörer med mera. (Befintliga snapin-moduler kan också användas som binära moduler.) Jämfört med en skriptmodul kan du med en binär modul skapa cmdletar som är snabbare eller använda funktioner (till exempel multitrådning) som inte är lika enkla att koda i Windows PowerShell-skript.
Precis som med skriptmoduler kan du inkludera en manifestfil som beskriver ytterligare resurser som din modul använder och för att spåra metadata om din modul. På samma sätt bör du förmodligen installera din binära modul i en mapp någonstans längs PowerShell-modulsökvägen. Mer information finns i How to How to Write a PowerShell Binary Module.
Manifestmoduler
En manifestmodul är en modul som använder en manifestfil för att beskriva alla dess komponenter, men som inte har någon form av kärnsammansättning eller skript. (Formellt lämnar en manifestmodul ModuleToProcess
- eller RootModule
-elementet i manifestet tomt.) Du kan dock fortfarande använda de andra funktionerna i en modul, till exempel möjligheten att läsa in beroende sammansättningar eller automatiskt köra vissa förbearbetningsskript. Du kan också använda en manifestmodul som ett bekvämt sätt att paketera resurser som andra moduler använder, till exempel kapslade moduler, sammansättningar, typer eller format. Mer information finns i Skriva ett PowerShell-modulmanifest.
Dynamiska moduler
En dynamisk modul är en modul som inte läses in från eller sparas i en fil. I stället skapas de dynamiskt av ett skript med hjälp av cmdleten New-Module. Med den här typen av modul kan ett skript skapa en modul på begäran som inte behöver läsas in eller sparas i beständig lagring. En dynamisk modul är till sin natur avsedd att vara kortvarig och kan därför inte nås av cmdleten Get-Module
. På samma sätt behöver de vanligtvis inte modulmanifest, och de behöver sannolikt inte heller permanenta mappar för att lagra sina relaterade sammansättningar.
Modulmanifest
Ett modulmanifest är en .psd1
fil som innehåller en hash-tabell. Nycklarna och värdena i hash-tabellen gör följande:
Beskriv innehållet och attributen i modulen.
Definiera förutsättningarna.
Fastställ hur komponenterna bearbetas.
Manifest krävs inte för en modul. Moduler kan referera till skriptfiler (
.ps1
), skriptmodulfiler (.psm1
), manifestfiler (.psd1
), formatering och typfiler (.ps1xml
), cmdlet- och providersammansättningar (.dll
), resursfiler, hjälpfiler, lokaliseringsfiler eller någon annan typ av fil eller resurs som paketeras som en del av modulen. För ett internationaliserat skript innehåller modulmappen också en uppsättning meddelandekatalogfiler. Om du lägger till en manifestfil i modulmappen kan du referera till flera filer som en enda enhet genom att referera till manifestet.Själva manifestet beskriver följande informationskategorier:
Metadata om modulen, till exempel modulversionsnumret, författaren och beskrivningen.
Krav som krävs för att importera modulen, till exempel Windows PowerShell-versionen, CLR-versionen (Common Language Runtime) och de moduler som krävs.
Bearbetningsdirektiv, till exempel skript, format och typer som ska bearbetas.
Begränsningar för medlemmar i modulen som ska exporteras, till exempel alias, funktioner, variabler och cmdletar som ska exporteras.
Mer information finns i Skriva ett PowerShell-modulmanifest.
Lagra och installera en modul
När du har skapat en skript-, binär- eller manifestmodul kan du spara ditt arbete på en plats där andra kan komma åt det. Din modul kan till exempel lagras i systemmappen där Windows PowerShell är installerat eller lagras i en användarmapp.
I allmänhet kan du avgöra var du ska installera modulen med hjälp av någon av sökvägarna som lagras i variabeln $Env:PSModulePath
. Om du använder någon av dessa sökvägar kan PowerShell automatiskt hitta och läsa in modulen när en användare anropar den i sin kod. Om du lagrar modulen någon annanstans kan du uttryckligen meddela PowerShell genom att skicka in platsen för modulen som en parameter när du anropar Install-Module
.
Oavsett kallas sökvägen för mappen för bas av modulen (ModuleBase) och namnet på modulfilen skript, binärfil eller manifest bör vara samma som modulmappens namn, med följande undantag:
Dynamiska moduler som skapas av cmdleten
New-Module
kan namnges med hjälp av parameternName
för cmdleten.Moduler som importeras från sammansättningsobjekt av kommandot
Import-Module -Assembly
namnges enligt följande syntax:"dynamic_code_module_" + assembly.GetName()
.Mer information finns i Installera en PowerShell-modul och about_PSModulePath.
Modul-cmdletar och variabler
Följande cmdletar och variabler tillhandahålls av Windows PowerShell för att skapa och hantera moduler.
cmdleten New-Module Den här cmdleten skapar en ny dynamisk modul som bara finns i minnet. Modulen skapas från ett skriptblock och dess exporterade medlemmar, till exempel dess funktioner och variabler, är omedelbart tillgängliga i sessionen och förblir tillgängliga tills sessionen stängs.
New-ModuleManifest cmdlet Den här cmdleten skapar en ny modulmanifestfil (.psd1
) som fyller i dess värden och sparar manifestfilen på den angivna sökvägen. Den här cmdleten kan också användas för att skapa en modulmanifestmall som kan fyllas i manuellt.
Import-Module cmdlet Den här cmdleten lägger till en eller flera moduler i den aktuella sessionen.
Get-Module cmdlet Den här cmdleten hämtar information om de moduler som har eller som kan importeras till den aktuella sessionen.
Export-ModuleMember cmdlet Den här cmdleten anger de modulmedlemmar (till exempel cmdletar, funktioner, variabler och alias) som exporteras från en skriptmodul (.psm1
) eller från en dynamisk modul som skapats med hjälp av cmdleten New-Module
.
Remove-Module cmdlet Den här cmdleten tar bort moduler från den aktuella sessionen.
Test-ModuleManifest cmdlet Den här cmdleten verifierar att ett modulmanifest korrekt beskriver komponenterna i en modul genom att kontrollera att filerna som visas i modulmanifestfilen (.psd1
) faktiskt finns i de angivna sökvägarna.
$PSScriptRoot Den här variabeln innehåller katalogen från vilken skriptmodulen körs. Det gör att skript kan använda modulsökvägen för att komma åt andra resurser.
$Env:PSModulePath Den här miljövariabeln innehåller en lista över de kataloger där Windows PowerShell-moduler lagras. Windows PowerShell använder värdet för den här variabeln när du importerar moduler automatiskt och uppdaterar hjälpavsnitt för moduler.