This isn't going to be a deep dive on the subject but is presented more as an informational overview of system automation using Microsoft PowerShell.
PowerShell has been around for a while now and has even gone cross-platform in recent years, with the release of PowerShell as an Open Source project that can also run on Linux operating systems. This ubiquity provides flexibility of resources, meaning the people and hardware involved in system automation, and brings a lot of power to bear on a wide range of needs within any size of IT infrastructure.
At a simple level, PowerShell can be used for simple tasks like copying files or even programmatically creating files. Coupled with the Windows Task Scheduler or Linux cron tab, you can even create regular activities like backups and exports.
At a more advanced level, however, PowerShell gives the system administrator or developer access to everything from Windows Instrumentation to Web Services. It supports common scripting idioms like function declarations and modules for creating reusable code. It is not, however, a compiled language and lacks advanced concepts like classes, inheritance and namespaces. But this is what makes it simple to use. No compiler is needed, no building of code to create executable artifacts is required. At minimum, you need to have PowerShell installed and a text editor and that is all it takes to make it work for you.
My preference has been to use Visual Studio Code, a free development tool from Microsoft, with the PowerShell addon installed. This, combined with an embedded PowerShell terminal, makes scripting quick and easy. Combining good coding practices like building test routines, making code modular and reusable, and using a source control system like Git, brings a commercial and industrial level of code management and performance to a PowerShell implementation.
Given a sufficient set of resources, PowerShell can operate as a regularly executed background task handling repetitious administrative and system management activities, freeing up System Administrators to focus on other areas of concern. A good rule of thumb for selecting PowerShell as a tool is similar to the way we decide to make a function when writing good code: when you find yourself repeating an action or set of operations, you have found an opportunity for abstraction. When coding, this means it's a good time to write a callable function. When working as a System Administrator, it's a good indicator the task should be automated, and PowerShell is the perfect, purpose made tool for that automation.