我有两种方法可以从单独的脚本文件中引用脚本变量。以下是两个基本示例:
1。点源
Variables.ps1
$Source = "source"
$Destination = "dest"
Execute.ps1
. .\Variables.ps1
Copy-Item -Path $Source -Destination $Destination -Force
2。全局变量
Variables.ps1
$Global:Source = "source"
$Global:Destination = "dest"
Execute.ps1
.\Variables.ps1
Copy-Item -Path $Source -Destination $Destination -Force
我做过研究,但尚未找到使用其中一种的明确理由。使用这些方法时是否应该遵循限制或注意事项?任何输入都非常感谢。谢谢你的时间。
修改
@ mklement0给出了一个很好的答案,为什么在全局变量上使用点源。我希望仍然保持这个讨论开放。如果有另一种观点,或者对使用全局变量的解释更有利,我会喜欢听到它并相应地进行投票。谢谢。
答案 0 :(得分:1)
我建议你使用点源,没有明确的全局变量 (方法1):
这样,需要刻意努力才能将变量添加到当前范围。请注意,dot-sourcing将变量添加到 current 范围,该范围可能是也可能不是当前会话的全局范围(子范围是通过调用脚本创建的) (没有点源)和例如&
的脚本块。
相比之下,使用全局变量(方法2)创建会话全局变量而不管调用方法,因此即使是偶然的,非点源的脚本调用最终也会改变全球州。