## My try to create a global constant
Set-Variable -Name c -Value "x" -Option Constant -Scope Global -Force
Write-Host $c ## -> x
$c = "y" ## -> WriteError: (C:String) [], SessionStateUnauthorizedAccessException
## -> VariableNotWritable
Write-Host $c ## -> x
function test {
Write-Host $c ## -> x
$c = "xxxx"
Write-Host $c ## -> xxxx
}
test
我的变量
$c
是全局可访问的,但在某些情况下并非常量。尝试在函数test()
内更改值,PowerShell允许更改值。是否有一种方法创建真正的全局常量变量?
背景:
我有一个主脚本。主脚本加载了几个模块。在所有模块和主脚本中,我需要一些固定的文件和注册表路径。因此,我希望将这些路径声明为全局常量。
$global:c
的值从不改变 - 当您在test
内部执行$c = "xxxx"
时,PowerShell会创建一个局部副本$c
- 在调用test
之后添加Write-Host $c
,您会看到这个局部副本的值。 - Mathias R. Jessen