Every day, I continue to be amazed at the extent to which PowerShell can be tweaked and customized. It offers a wide range of configurable options that we can change by modifying variables or functions. This chapter will describe the shell environment, how we can get information about the shell settings, and how to configure the most popular options of the shell. We will work with the initialization scripts, or the so-called user profile scripts, that allow us to save configuration-related code and execute it for all instances of the shell. Finally, I will show how the shell can call our code when building the prompt string or when looking for strings to complete the current command.