作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 powershell 脚本 (.ps1),它执行其他具有返回值的 Powershell 脚本。
我使用以下命令调用脚本:
$result = Invoke-Expression -Command ".\check.ps1 $fileCommon"
Write-Output $result
输出仅是具有其他脚本的Write-Ouput
,但不是返回值$true
或$false
。
如何捕获其他脚本的返回值?
最佳答案
PowerShell 中 return
语句后面的表达式的计算方式与其他表达式一样。如果它产生输出,则将其写入标准输出。您的 $result 接收脚本写入 stdout 的所有内容。如果不止一件事被写入标准输出,您将在一个数组中获取这些内容。
例如,如果您的 check.ps1 如下所示:
Write-Output "$args[0]"
return $false
你用它来调用它
$result = &".\check.ps1" xxx
那么$result
将是一个大小为2的对象数组,值为“xxx”(字符串)和“False”( bool )。
如果您无法更改脚本,以便仅将返回值写入标准输出(这将是最干净的方法),您可以忽略除最后一个值之外的所有内容:
$result = &".\check.ps1" xxx | select -Last 1
现在 $result
将仅包含“False”作为 bool 值。
如果您可以更改脚本,另一个选择是传递变量名称并在脚本中设置它。
调用:
&".\check.ps1" $fileCommon "result"
if ($result) {
# Do things
}
脚本:
param($file,$parentvariable)
# Do things
Set-Variable -Name $parentvariable -Value $false -Scope 1
-Scope 1
引用父(调用者)范围,因此您可以从调用代码中读取它。
关于powershell - 如何在 Powershell 脚本中捕获返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50578510/
我是一名优秀的程序员,十分优秀!