Windows 7 RTMを実行しています。 PowerShell 2.0はデフォルトでインストールされます。私はスクリプトを編集するために優れたWindows PowerShell ISE を使用しています。次のスクリプトがあります。
Param($p)
Param($d)
echo $p $d
スクリプトをSayItAgain.ps1として保存します。次のように対話型シェルからこのスクリプトを実行しようとすると:
./SayItAgain -p "Hello"
次のエラーが表示されます。
「Param」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。
At C:\users\cius\Code\powershell\SayItAgain.ps1:2 char:6
+ Param <<<< ($destination)
+ CategoryInfo : ObjectNotFound: (Param:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
これは既知の問題ですか、それとも単に間違って使用していますか?
私は問題を解決しました。問題の説明を修正して正確にしました。
問題の原因は、Paramキーワードを誤って複数回使用していたことです。正しい使用法は、次のように単一のParam宣言内で複数のパラメーターを宣言することです。
Param($p, $d)
この使用法は、Windows PowerShellヘルプ記事「about_Functions」で説明されています。
param($p)
が、Paramエラーを引き起こす可能性のあるスクリプトの最初の行でない場合。
param($p)
が最初の行であることを確認してください。
このスクリプトを実行すると、
cls
param([string]$Url, [string]$Template="CMSPUBLISHING#0")
Write-Host "Url: $Url"
同じエラーが出ました
「param」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。
一番上にあるcls
をコメントアウトすると、うまくいきました。
#cls
param([string]$Url, [string]$Template="CMSPUBLISHING#0")
Write-Host "Url: $Url"