求脚本之间调用,用[ref]传值实例


PowerShell交流中心分类: Powershell基础求脚本之间调用,用[ref]传值实例
0
momoko_glad asked 7 年 ago

A脚本

param([ref][String]$b)
Function a(){
$b = 0
$path = “D:\file\b.ps1”
$re = & $path ([ref]$b)
Write-Host $b

}

$re = a
return $re

B脚本
param([String][ref]$b)

Function b(){
[String]$b = 3
$re = 0
}

$re = b
return $re

为什么在调用完B脚本之后b的值没有发生变化?

2 Answers
1
Best Answer
Mooser Lee 管理员 answered 7 年 ago
$Response=[PSCustomObject]@{Success=$true;Result="";Error=@()}
trap
{
$Response.Success=$false;
$Response.Error+=$_
return $Response
}
$Response.Result = Get-Date
#第一类:自己抛异常
throw '我要在这里主动抛出异常'

#第二类:脚本执行的异常
1/0

#第三类,命令内部异常trap搞不定,需要通过ErrorAction捕获,并记录
Get-Item '不存在' -ErrorAction SilentlyContinue
if(!$?){
$Response.Error+=$Error[0]
}
$Response

输出示例

Success Result Error 
------- ------ ----- 
 False 2017/5/17 23:26:09 {我要在这里主动抛出异常}
0
Mooser Lee 管理员 answered 7 年 ago

跨脚本执行,ref不起作用。
还有,你的设计思路有问题,A是主脚本,B是副脚本,副脚本执行完毕后,应当是通过返回值传值,而不是这种大开脑洞的折腾【REF】。

momoko_glad replied 7 年 ago

那如果我想返回两个结果,一个是能否成功执行函数的A,另一个是我想要的查询的值B,怎么定义这两个值,怎么在返回的结果中找到我想要的值?Thank you~