'PowerShell 2.0 and "The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program"

I am running Windows 7 RTM. PowerShell 2.0 is installed by default. I am using the excellent Windows PowerShell ISE to edit my scripts. I have the following script:

Param($p)
Param($d)
echo $p $d

I save the script as SayItAgain.ps1. When I try to run this script from the interactive shell like so:

./SayItAgain -p "Hello"

I receive the following error:

The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

At C:\users\cius\Code\powershell\SayItAgain.ps1:2 char:6
+ Param <<<< ($destination)
    + CategoryInfo          : ObjectNotFound: (Param:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Is this a known issue or am I simply using it wrong?



Solution 1:[1]

I've solved the problem. I've corrected the description of the problem to make it accurate.

The source of the problem is that I was incorrectly using the Param keyword multiple times. The correct usage is to declare multiple parameters within a single Param declaration like the following:

Param($p, $d)

This usage is explained in the Windows PowerShell Help article "about_Functions".

Solution 2:[2]

If your param($p) is not the first line in your script that can cause the Param error.

Make sure your param($p) is the first line.

Solution 3:[3]

Running this script,

cls

param([string]$Url, [string]$Template="CMSPUBLISHING#0")

Write-Host "Url: $Url"  

I got the same error

The term 'param' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

When I commented out the cls at the top it worked,

#cls 

param([string]$Url, [string]$Template="CMSPUBLISHING#0")

Write-Host "Url: $Url"

Solution 4:[4]

Also had this "kind" of problem, but I couldn`t run any of my ps1 scripts. Solution: Change encoding from UTF-8 (or which you have) to ANSI. Perhaps it will help someone too.

Solution 5:[5]

I had this issue when trying to use a powershell inline script in an azure dev-ops pipeline, turns out this is an issue so will be using a script from a file instead

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 JayTurnr
Solution 2 Peter Mortensen
Solution 3 Paul Rowland
Solution 4 Vladyslav Hrehul
Solution 5 martinseal1987