我的最终目标是使用PowerShell从Active Directory配置Office 365中的电子邮件。第一个脚本调用第二个,第二个调用第三个和第四个,第四个调用第五个和第四个脚本。最后的剧本。我需要将参数传递给第一个脚本,参数需要在最终脚本中完成(完成所有工作)但我遇到的问题是将它们传递给所有脚本以最终到达最终脚本。
每个脚本在脚本开头包含以下内容以接收参数:
param(
[string]$empl_status,
[string]$emplid,
[string]$union_cd,
[string]$location,
[string]$job_function,
[string]$dn,
[string]$cn
)
要将参数传递给下一个脚本,每个脚本对下一个脚本的调用如下所示:
. "c:\rsa\connectexch.ps1" -empl_status="$empl_status" -emplid="$emplid" -union_cd="$union_cd" -location="$location" -job_function="$job_function" -dn="$dn" -cn="$cn"
我一直在搜索互联网但是没有找到任何可以通过5个脚本传递参数的文档。我显然做错了,因为最终脚本刚刚结束,因为它没有要处理的参数。我猜这是一个我不知道名字的过程,因为我对PowerShell还不熟悉。
这是我发现的一篇文章,它将我送到了上面的方向 - How to pass a variable (array of strings) to other PowerShell scripts。我还与另外两位重要的PowerShell用户进行了交谈,他们已经确认这是如何将参数传递给多个脚本的。
希望这对某人有意义,我可以得到一些帮助。我不知道还有什么地方可以寻求帮助......
答案 0 :(得分:0)
我用来测试我的解决方案的脚本
param(
[Parameter(Mandatory=$true)]
$p1,
[Parameter(Mandatory=$true)]
$p2,
$stop
)
Write-Verbose "P1: $p1" -Verbose
Write-Verbose "P1: $p2" -Verbose
if(!$stop)
{
. .\connectexch.ps1 @PSBoundParameters -stop $true
}
所以解决方案是:
. "c:\rsa\connectexch.ps1" @PSBoundParameters
这称为喷溅。 PSBoundParameters是提供给函数的所有参数的内置哈希表(调用ps1就像处理函数一样。)