PowerShell中的函数返回值

我开发了一个PowerShell函数,执行一些操作涉及供应SharePoint团队网站。最终,我想让函数返回的配置网站的URL作为String所以在我的函数的结尾我有以下代码:

$rs = $url.ToString();
return $rs;

调用此函数的代码如下所示:

$returnURL = MyFunction -param 1 ...

所以我期待一个字符串,但它不是。相反,它是一个类型System.Management.Automation.PSMethod的对象。为什么它返回该类型而不是String类型?

PowerShell有真正古怪的返回语义 – 至少从更传统的编程角度来看。有两个主要想法来包装你的头:

>捕获并返回所有输出
> return关键字只是表示一个逻辑退出点

因此,以下两个脚本块将有效地完成同样的事情:

$a = "Hello, World"
return $a
$a = "Hello, World"
$a
return

第二个示例中的$ a变量作为输出留在管道上,如上所述,将返回所有输出。事实上,在第二个例子中,你可以完全省略返回,你会得到相同的行为(函数自然完成和退出时,返回将被隐含)。

没有更多的你的函数定义我不能说为什么你得到一个PSMethod对象。我的猜测是,你可能有一些几行,没有被捕获,并被放置在输出管道上。

还值得注意的是,您可能不需要这些分号 – 除非您在一行上嵌套多个表达式。

您可以在TechNet上的about_Return页面上阅读更多关于返回语义的信息,或者通过从PowerShell本身调用help return命令。

http://stackoverflow.com/questions/10286164/function-return-value-in-powershell

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:PowerShell中的函数返回值