PSCmdlet była używana, gdy zachodziła konieczność interakcji cmdleta z runtime PowerShella. Te klasy bazowe definiowały konkretne metody - BeginProcessing(), ProcessRecord() oraz EndProcessing() – które były przeciążane przez implementację cmdleta w celu zapewnienia funkcjonalności. Gdy tylko cmdlet był uruchamiany, PowerShell kolejno wywoływał te metody, a ProcessRecord() była wywoływana, gdy otrzymała dane wejściowe potoku. Jeśli wysłano kolekcję obiektów, metoda jest wywoływana osobno dla każdego z nich. Klasa implementująca Cmdleta musi mieć jeden atrybut .NET - CmdletAttribute – określa on czasownik i rzeczownik, które tworzą nazwę cmdleta. Wspólne czasowniki są numerowane.

Jeśli cmdlet otrzyma dane wejściowe z potoku lub z parametru wiersza poleceń, w klasie musi być odpowiednia właściwość, wraz z zaimplementowanym mutatorem. PowerShell wywołuje mutatora poprzez wartość parametru lub przez dane wejściowe potoku, które mutator zapisuje jako zmienne w klasie. Następnie do tych wartości odnoszą się metody, które implementują tę funkcjonalność. Właściwości które mapują się do parametrów wiersza poleceń są oznaczone przez ParameterAttribute i zdefiniowane, zanim nastąpi odwołanie do metodyBeginProcessing().