我正在创建一个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在其方法名称中没有“ - ”。 我还没有想出办法摆脱它......但即便如此,那也会很混乱。
答案 0 :(得分:2)
试试这个: $ myObject的。 “你几岁”()
答案 1 :(得分:0)
你可以做到
$myObject."Do-Something"()
函数通常用Pascal case(DoSomething)或单词(do_something)之间的_
(下划线)编写。
答案 2 :(得分:-1)
我之前遇到过这个问题。您可以考虑在模块中添加别名以允许DoSomething(以及模块中的任何其他功能)。