点源变量VS全局变量

时间:2017-02-21 23:51:39

标签: powershell variables file-copying

我有两种方法可以从单独的脚本文件中引用脚本变量。以下是两个基本示例:

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给出了一个很好的答案,为什么在全局变量上使用点源。我希望仍然保持这个讨论开放。如果有另一种观点,或者对使用全局变量的解释更有利,我会喜欢听到它并相应地进行投票。谢谢。

1 个答案:

答案 0 :(得分:1)

我建议你使用点源,没有明确的全局变量 (方法1):

这样,需要刻意努力才能将变量添加到当前范围。请注意,dot-sourcing将变量添加到 current 范围,该范围可能是也可能不是当前会话的全局范围(子范围是通过调用脚本创建的) (没有点源)和例如&的脚本块。

相比之下,使用全局变量(方法2)创建会话全局变量而不管调用方法,因此即使是偶然的,非点源的脚本调用最终也会改变全球州。