我正在尝试创建一个简单的PowerShell cmdlet,它具有一些必需参数。我已经找到了以下代码,但是我无法执行它:
function new-command() {
[CmdletBinding()]
PARAM (
[Parameter(Mandatory=$true)]
[string]$Name
)
}
new-command
返回以下错误:
在表达式中缺少关闭')'。行:5个字符:3 + [<<<<< string] $ Name
我做错了什么?
答案 0 :(得分:10)
解释是您在PowerShell V1.0中运行此脚本,并且PowerShell V2.0支持这些功能属性。为你的PowerHhell版本查看$host
变量。
答案 1 :(得分:1)
请改为尝试:
function new-command {
[CmdletBinding()]
PARAM (
[Parameter(Mandatory=$true)]
[string]$Name
)
}
new-command
函数名后面不需要括号。
答案 2 :(得分:1)
在PS 2.0中,必需参数通过CmdLetBinding和Parameter属性控制,如其他答案所示。
function new-command {
[CmdletBinding()]
PARAM (
[Parameter(Mandatory=$true)]
[string]$Name
)
$Name
}
new-command
在PS 1.0中,没有用于处理强制属性的直接构造,但是如果没有提供必需参数,则可以抛出错误。我经常使用以下构造。
function new-command {
param($Name=$(throw "Mandatory parameter -Name not supplied."))
$Name
}
我希望这会有所帮助。
答案 3 :(得分:1)
如果Param(...)未在脚本开头声明(排除注释行),即使使用Powershell v2.0,您也会收到相同的错误消息。请参阅powershell-2-0-param-keyword-error
答案 4 :(得分:0)
请尝试以下语法,并请检查是否遗漏了双引号或括号。
Param([parameter(Mandatory=$true, HelpMessage="Path to file")] $path)