This document provides an overview of programming cmdlets and scripting in PowerShell. It discusses why a systems administrator needs programming knowledge, introduces PowerShell and cmdlets, and covers the basics of C# needed to program cmdlets, including classes, methods, properties, exceptions, and namespaces. It describes the anatomy of a cmdlet, including parameters, processing methods, and snap-ins. Finally, it provides an example PowerShell script and discusses additional scripting features. The document aims to equip readers with the fundamental skills to begin programming their own PowerShell cmdlets and scripts.