PowerShell模块中正确的函数名称约定是什么?

时间:2011-06-28 13:18:25

标签: powershell

我正在创建一个powershell模块,并遵循我导出的函数的Verb-Noun命名约定。

e.g。

function Do-Something() {
    sleep 10
}

导入模块按预期工作...但是如果我将该模块导入为自定义对象。

$myObject = Import-Module MyModule -AsCustomObject

然后尝试访问该函数,我得到一个解析错误:

PS > $myObject.Do-Something()
You must provide a value expression on the right-hand side of the '-' operator.
At line:1 char:22
+ $myObject.Do- <<<< Something()
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

我不明白。这是否意味着我不能在属于对象的方法中使用' - '? 我注意到.NET对象和其他PSObject在其方法名称中没有“ - ”。 我还没有想出办法摆脱它......但即便如此,那也会很混乱。

3 个答案:

答案 0 :(得分:2)

试试这个:      $ myObject的。 “你几岁”()

答案 1 :(得分:0)

你可以做到

$myObject."Do-Something"()

函数通常用Pascal case(DoSomething)或单词(do_something)之间的_(下划线)编写。

答案 2 :(得分:-1)

我之前遇到过这个问题。您可以考虑在模块中添加别名以允许DoSomething(以及模块中的任何其他功能)。