There has always been some degree of concern from the IT community that someone could use PowerShell for malicious purposes because the scripting utility can interact with the Windows operating system on a deep level.
The primary mechanism that prevents PowerShell from being misused is the execution policy. PowerShell execution policies determine the conditions when PowerShell scripts are -- or are not -- allowed to work. There are six PowerShell execution policies. The four most common ones are:
Restricted: PowerShell scripts cannot execute and configuration files cannot load.
AllSigned: PowerShell scripts can only execute if they are signed by a trusted publisher. Configuration files must also be signed.
RemoteSigned: PowerShell scripts or configuration files that have been downloaded from the internet must be signed. Locally created scripts and configuration files do not have to be signed.
Unrestricted: Any script can run, and any configuration file may be used. There is no requirement for code signing.
IT administrators can set the execution policy from the PowerShell prompt by using the Set-ExecutionPolicy cmdlet, followed by the name of the execution policy. Verify the change with the Get-ExecutionPolicy cmdlet.
Admins can also control PowerShell execution policies at the Group Policy level. The computer-level settings for doing so are found in the Group Policy Object Editor at Computer Configuration > Policies > Administrative Templates > Windows Components > Windows PowerShell. User configuration settings are available at User Configuration > Policies > Administrative Templates > Windows Components > Windows PowerShell.
Get started with Windows PowerShell
Is PowerShell a security risk?
Most useful PowerShell commands