0

我在 powershell 模块中有一个函数,它显示消息并返回 $true。

MSDOS 控制台中的以下命令有效。我在标准输出上看到该函数的所有消息,并返回硬编码值 $true :

C:>Powershell -NoProfile -Command "& {Import-Module MyModule; MyFunctionInModule -Parameter1 'D:\...'; exit $true }"
C:>echo %errorlevel%
1

但是如何以函数的返回值退出呢?以下命令不起作用。我没有看到函数的输出消息,也没有得到函数的返回值:

C:>Powershell -NoProfile -Command "& {Import-Module MyModule; $result = MyFunctionInModule -Parameter1 'D:\...'; exit $result }"
C:>echo %errorlevel%
0

谢谢您的帮助。

4

1 回答 1

0

首先,这在 PowerShell 2.0 中对我有用

C:\>Powershell -NoProfile -Command "& {write-host "coucou";$return=13;  exit $return}"
coucou

C:\Users\BLANCJP>echo %errorlevel%
13

对我来说,它对你不起作用的原因是在你的函数中MyFunctionInModulewrite-output用来写入控制台。您在函数中放置未写入输出的所有内容都会创建一个数组,该数组是函数的返回。因此,使用 Write-Host 写入函数中的主机,并在函数结束时返回 XX,它应该可以工作。

于 2013-11-15T15:24:07.460 回答