A “Hello World” script is probably a good starting point.
Start PowerShell from Start Menu ➞ All Programs ➞ Windows PowerShell 1.0 ➞ Windows PowerShell.
At the PowerShell command prompt, the command
Help shows the various commands
and aliases that are available in PowerShell.
Write-Host Hello World will essentially do the same as the old
echo command - which is great for our purpose here. But that is too easy… we want a script!
In a text editor, create a text file named “test.ps1” and save it to the current path within PowerShell. Add the following text to the file and save it.
1Write-Host Hello World
Back in the PowerShell window, how do we run the script?
Just typing the command
test.ps1 produces the following error.
1The term 'test.ps1' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again. 2At line:1 char:8 3+ test.ps1 <<<<
Instead, the name of the script needs to be prefixed with a period followed by a forward or backwards slash.
Run the command
Since we haven’t digitally signed the script, another error appears.
1File test.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details. 2At line:1 char:10 3+ ./test.ps1 <<<<
This error occurs because by default the execution policy that affects all users on a machine is set (in the Windows Registry) such that unsigned scripts are disabled.
Get-ExecutionPolicy shows the current policy about executing scripts. Currently it is set to “Restricted”.
Get-Help Set-ExecutionPolicy provides general information about the Set-ExecutionPolicy command.
Get-Help Set-ExecutionPolicy -detailed provides more detailed information about the Set-ExecutionPolicy command.
Get-Help Set-ExecutionPolicy -full provides the most information about the Set-ExecutionPolicy command.
Set-ExecutionPolicy -executionPolicy RemoteSigned will set the policy such that only scripts that are downloaded from the internet are required to be signed by a trusted publisher.
However, on Windows Vista the following error occurs because it requires escalated privileges.
1Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1ShellIds\Microsoft 2.PowerShell' is denied. 3At line:1 char:20 4+ Set-ExecutionPolicy <<<< -executionPolicy RemoteSigned
The easiest way to change the execution policy in Vista is to start PowerShell from the start menu by
right-clicking and selecting “Run as Administrator”. From within that PowerShell the
command will work. Close that window after executing the command.
Finally we can then successfully execute the script with the command
./test.ps1, and it actually works!