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.
The command Write-Host Hello World
will essentially do the same as the old
Command Prompt 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 ./test.ps1
.
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.
The command Get-ExecutionPolicy
shows the current policy about executing scripts. Currently it is set to “Restricted”.
The command Get-Help Set-ExecutionPolicy
provides general information about the Set-ExecutionPolicy command.
The command Get-Help Set-ExecutionPolicy -detailed
provides more detailed information about the Set-ExecutionPolicy command.
The command Get-Help Set-ExecutionPolicy -full
provides the most information about the Set-ExecutionPolicy command.
The 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 Set-ExecutionPolicy
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!
comments powered by Disqus