点源变量 VS 全局变量

2024-03-29

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

1. 点源
变量.ps1

$Source = "source"  
$Destination = "dest"

执行.ps1

. .\Variables.ps1  
Copy-Item -Path $Source -Destination $Destination -Force

2. 全局变量
变量.ps1

$Global:Source = "source"  
$Global:Destination = "dest"

执行.ps1

.\Variables.ps1  
Copy-Item -Path $Source -Destination $Destination -Force

我已经进行了研究,但尚未找到使用其中一种而不是另一种的明确理由。使用这些方法时是否有限制或注意事项?任何意见都将受到高度赞赏。感谢您的时间。

EDIT:

@mklement0 对于为什么在全局变量上使用点源给出了很好的答案。我很愿意继续讨论这个问题。如果有其他观点,或者关于何时使用全局变量更有益的解释,我很乐意听到它并相应地投票。谢谢。


我建议你使用点源,没有显式的全局变量(方法一):

那样,它需要一个刻意的努力将变量添加到当前范围。请注意,点源将变量添加到current范围,可能是也可能不是当前会话的范围global范围(子范围是通过调用脚本(没有点源)和脚本块创建的&, 例如)。

相比之下,使用全局变量(方法 2)创建会话全局变量与调用方法无关,这样即使是意外的、非点源的脚本调用最终也会改变global state.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

点源变量 VS 全局变量 的相关文章