Dela via


Översikt över cmdlets

En cmdlet är ett enkelt kommando som används i PowerShell-miljön. PowerShell-körningen anropar dessa cmdletar inom ramen för automationsskript som finns på kommandoraden. PowerShell-körningen anropar dem också programmatiskt via PowerShell-API:er.

cmdlets

Cmdletar utför en åtgärd och returnerar vanligtvis ett Microsoft .NET-objekt till nästa kommando i pipelinen. En cmdlet är ett enda kommando som deltar i pipeline-semantiken i PowerShell. Detta inkluderar binära cmdletar (C#), avancerade skriptfunktioner, CDXML och arbetsflöden.

Den här SDK-dokumentationen beskriver hur du skapar binära cmdletar som skrivits i C#. Information om skriptbaserade cmdletar finns i:

Om du vill skapa en binär cmdlet måste du implementera en cmdlet-klass som härleds från en av två specialiserade cmdlet-basklasser. Den härledda klassen måste:

  • Deklarera ett attribut som identifierar den härledda klassen som en cmdlet.
  • Definiera offentliga egenskaper som är dekorerade med attribut som identifierar de offentliga egenskaperna som cmdlet-parametrar.
  • Åsidosätt en eller flera av indatabearbetningsmetoderna för att bearbeta poster.

Du kan läsa in sammansättningen som innehåller klassen direkt med hjälp av cmdleten Import-Module eller skapa ett värdprogram som läser in sammansättningen med hjälp av System.Management.Automation.Runspaces.InitialSessionState API. Båda metoderna ger programmatisk och kommandoradsåtkomst till cmdletens funktioner.

Cmdlet-villkor

Följande termer används ofta i PowerShell-cmdletdokumentationen:

Cmdlet-attribut

Ett .NET-attribut som används för att deklarera en cmdlet-klass som en cmdlet. Även om PowerShell använder flera andra attribut som är valfria krävs cmdlet-attributet. Mer information om det här attributet finns i Cmdlet-attributdeklaration.

Cmdlet-parameter

De offentliga egenskaper som definierar de parametrar som är tillgängliga för användaren eller för det program som kör cmdleten. Cmdletar kan ha obligatoriska, namngivna, positionella och växla parametrar. Med switchparametrar kan du definiera parametrar som endast utvärderas om parametrarna anges i anropet. Mer information om de olika typerna av parametrar finns i Cmdlet-parametrar.

Parameteruppsättning

En grupp parametrar som kan användas i samma kommando för att utföra en specifik åtgärd. En cmdlet kan ha flera parameteruppsättningar, men varje parameteruppsättning måste ha minst en parameter som är unik. Bra cmdlet-design tyder starkt på att den unika parametern också är en obligatorisk parameter. Mer information om parameteruppsättningar finns i Cmdlet-parameteruppsättningar.

Dynamisk parameter

En parameter som läggs till i cmdleten vid körning. Vanligtvis läggs de dynamiska parametrarna till i cmdleten när en annan parameter anges till ett specifikt värde. Mer information om dynamiska parametrar finns i Dynamiska cmdletar.

Metoder för indatabearbetning

Klassen System.Management.Automation.Cmdlet innehåller följande virtuella metoder som används för att bearbeta poster. Alla härledda cmdlet-klasser måste åsidosätta en eller flera av de tre första metoderna:

Mer information om dessa metoder finns i Cmdlet-indatabearbetningsmetoder.

När du implementerar en cmdlet måste du åsidosätta minst en av dessa indatabearbetningsmetoder. Vanligtvis är ProcessRecord() den metod som du åsidosätter eftersom den anropas för varje post som cmdleten bearbetar. Däremot anropas metoden BeginProcessing() och metoden EndProcessing() en gång för att utföra förbearbetning eller efterbearbetning av posterna. Mer information om dessa metoder finns i indatabearbetningsmetoder.

Funktionen ShouldProcess

Med PowerShell kan du skapa cmdletar som uppmanar användaren att få feedback innan cmdleten ändrar systemet. Om du vill använda den här funktionen måste cmdleten deklarera att den stöder funktionen ShouldProcess när du deklarerar cmdlet-attributet, och cmdleten måste anropa System.Management.Automation.Cmdlet.ShouldProcess och System.Management.Automation.Cmdlet.ShouldContinue metoder inifrån en indatabearbetningsmetod. Mer information om hur du stöder funktionen ShouldProcess finns i Begära bekräftelse.

Transaktion

En logisk grupp med kommandon som behandlas som en enda uppgift. Uppgiften misslyckas automatiskt om något kommando i gruppen misslyckas och användaren har möjlighet att acceptera eller avvisa de åtgärder som utförs i transaktionen. För att delta i en transaktion måste cmdleten deklarera att den stöder transaktioner när cmdlet-attributet deklareras. Stöd för transaktioner introducerades i Windows PowerShell 2.0. Mer information om transaktioner finns i Så här stöder du transaktioner.

Hur cmdletar skiljer sig från kommandon

Cmdletar skiljer sig från kommandon i andra kommandogränssnittsmiljöer på följande sätt:

  • Cmdletar är instanser av .NET-klasser. de är inte fristående körbara filer.
  • Cmdletar kan skapas från så få som ett dussin rader med kod.
  • Cmdletar utför vanligtvis inte sin egen parsning, felpresentation eller utdataformatering. Parsning, felpresentation och utdataformatering hanteras av PowerShell-körningen.
  • Cmdletar bearbetar indataobjekt från pipelinen i stället för från textströmmar, och cmdletar levererar vanligtvis objekt som utdata till pipelinen.
  • Cmdletar är postorienterade eftersom de bearbetar ett enskilt objekt i taget.

Cmdlet-basklasser

Windows PowerShell stöder cmdletar som härleds från följande två basklasser.

  • De flesta cmdletar baseras på .NET-klasser som härleds från basklassen System.Management.Automation.Cmdlet. Genom att härleda från den här klassen kan en cmdlet använda den minsta uppsättningen beroenden på Windows PowerShell-körningen. Detta har två fördelar. Den första fördelen är att cmdlet-objekten är mindre och att du är mindre benägna att påverkas av ändringar i PowerShell-körningen. Den andra fördelen är att du, om du måste, direkt kan skapa en instans av cmdlet-objektet och sedan anropa det direkt i stället för att anropa det via PowerShell-körningen.

  • De mer komplexa cmdletarna baseras på .NET-klasser som härleds från System.Management.Automation.PSCmdlet basklass. Genom att härleda från den här klassen får du mycket mer åtkomst till PowerShell-körningen. Med den här åtkomsten kan din cmdlet anropa skript, komma åt leverantörer och få åtkomst till det aktuella sessionstillståndet. (För att få åtkomst till det aktuella sessionstillståndet får du och anger sessionsvariabler och inställningar.) Om du härleder från den här klassen ökar dock storleken på cmdlet-objektet, och det innebär att cmdleten är mer nära kopplad till den aktuella versionen av PowerShell-körningen.

Om du inte behöver utökad åtkomst till PowerShell-körningen bör du i allmänhet härleda från klassen System.Management.Automation.Cmdlet. PowerShell-körningen har dock omfattande loggningsfunktioner för körning av cmdletar. Om granskningsmodellen är beroende av den här loggningen kan du förhindra körningen av din cmdlet inifrån en annan cmdlet genom att härleda från klassen System.Management.Automation.PSCmdlet.

Cmdlet-attribut

PowerShell definierar flera .NET-attribut som används för att hantera cmdletar och för att ange vanliga funktioner som tillhandahålls av PowerShell och som kan krävas av cmdleten. Attribut används till exempel för att ange en klass som en cmdlet, för att ange parametrarna för cmdleten och för att begära validering av indata så att cmdlet-utvecklare inte behöver implementera den funktionen i sin cmdlet-kod. Mer information om attribut finns i PowerShell-attribut.

Cmdlet-namn

PowerShell använder ett verb-och-substantivnamnpar för att namnge cmdletar. Till exempel används den Get-Command cmdlet som ingår i PowerShell för att hämta alla cmdletar som är registrerade i kommandogränssnittet. Verbet identifierar den åtgärd som cmdleten utför och substantivet identifierar den resurs som cmdleten utför sin åtgärd på.

Dessa namn anges när .NET-klassen deklareras som en cmdlet. Mer information om hur du deklarerar en .NET-klass som en cmdlet finns i Cmdlet-attributdeklaration.

Skriva cmdlet-kod

Det här dokumentet innehåller två sätt att identifiera hur cmdlet-kod skrivs. Om du föredrar att se koden utan någon förklaring kan du läsa Exempel på Cmdlet Code. Om du föredrar mer förklaring av koden kan du läsa GetProc Tutorial, StopProc Tutorialeller SelectStr Tutorial.

Mer information om riktlinjerna för att skriva cmdletar finns i Cmdlet Development Guidelines.

Se även

PowerShell Cmdlet-begrepp

Skriva en PowerShell-cmdlet

PowerShell SDK