Getting Started
PowerShell is an interactive shell designed around ease of use and user friendliness. It sits atop your existing system and therefore has access to all commands you can run in cmd.exe, bash etc., as well as a vast selection of its own commands you can run.
Commands are provided in the form of functions or cmdlets (pronounced command-lets), which are essentially the same thing. The name of the command typically takes the form Verb-Noun, e.g. Get-Property, which should hopefully make it easy to discover the commands you wish (see Discovery).
Object-based Architecture
PowerShell is object-based, rather than text-based like bash. This means that most functions, when returning something more complex than a string or integer, will return an object which you can sort or filter, or access child objects of.
For example
$Files = Get-ChildItem # This command returns an array of files (if more than one entry found)
$Files[0]
$Files[0] # You can access an item in the array by its index
Directory: C:\code\powershell-training-docs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 14/07/2026 10:42 .github
$Files[0].FullName # You can access a specific property of a given object individually
C:\code\powershell-training-docs\.githubInstalling Modules
PowerShell comes preinstalled with a large selection of functions, but you can also install external modules for almost anything from the PowerShell Gallery, or make your own.
The Akamai modules, for instance, can be installed by running:
Install-Module Akamai -Scope CurrentUseror on later versions
Install-PSResource Akamai -Scope CurrentUser -TrustRepositoryThe Akamai modules are actually a collection of around 35 sub-modules, but we've structured them in such a way that if you install the top-level Akamai module, all child modules for all APIs will be installed alongside. If you would rather install just a single module, you can do so like this:
Install-Module Akamai.Property -Scope CurrentUserThe Akamai.Common is required by all other modules, so will always be installed whether you install the parent module or one of the sub-modules.
You can also use this process to install other third-party modules, for whatever else you may be working on. There are highly popular modules for Azure and AWS, as well as less well-known ones such as ImportExcel which allows you to interact directly with .xlsx files and powershell-yaml, which allows you to convert to and from YAML just as you might do with JSON.
If you run
Install-ModuleorInstall-PSResourcewithout a-Scopeparameter it will attempt to install the module for all users, which requires elevated privileges. Whether or not you possess these privileges it is generally good practice to install for your user only, which requires no higher-level permissions. You can do this by adding-Scope CurrentUserto your command.
Install-Module vs Install-PSResource
The Install-PSResource command is more modern and typically much faster, but is not available out of the box with the older version of PowerShell which comes preinstalled in Windows (it is available automatically on Mac and Linux). Ideally, you should simply install the latest version of PowerShell and enjoy its many (many) improvements, but if this is not possible you can install the Install-PSResource command in PowerShell 5.1 by running:
Install-Module PowerShellGet -ForceTrusting Repositories
Unless you have updated your local preferences, the PowerShell Gallery is not a trusted source, and you will be prompted to confirm that you wish to install any module from there. You can avoid this prompt in various ways depending on your install command.
If you are using Install-PSResource, you can add the -TrustRepository parameter to your command, which will trust the repository for this install only. Or you can run Set-PSRepository -Name PSGallery -InstallationPolicy Trusted to mark the gallery as a trusted source for all future installs.
If you are using Install-Module, you can add the -Force parameter to your command, which will trust the repository for this single install. Or you can run Set-PSRepository -Name PSGallery -InstallationPolicy Trusted to mark the gallery as a trusted source for the future.