我有一堆powershell脚本,为了保持模块化而分解。但是,所有或大多数这些脚本都依赖于某些常见变量,例如与之交谈的服务器等。我在全局范围内定义这些变量,并使用$global:{Variable}
语法在脚本中访问它们。 / p>
这在作为入口点的脚本中工作正常。但是,当main(入口点)脚本使用以下语法执行子脚本时,我不再能读取相同全局变量的值。我得到的只是空字符串。
Powershell.exe -File .\Child-Script.ps1
我的理解是:
我在这里缺少什么?请帮忙。
示例:
$global:ServerUrl="http://myserver.com"
Write-Host "ServerUrl (Main-Script): $global:ServerUrl"
Powershell.exe -File .\Child-Script.ps1
Write-Host "ServerUrl (Child-Script): $global:ServerUrl"
ServerUrl (Main-Script): http://myserver.com
ServerUrl (Child-Script):
答案 0 :(得分:0)
启动Powershell.exe时,您将创建一个具有自己的全局上下文的新PowerShell会话。所以这个:
Powershell.exe -File .\Child-Script.ps1
将导致子脚本在不同的上下文中运行。相反,您可以'Dot Source'子脚本,这将导致它在当前上下文中执行:
. .\Child-Script.ps1