【发布时间】:2017-11-04 23:36:59
【问题描述】:
## 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的本地副本 - 在调用Write-Host $c之后添加Write-Host $c和你会看到 -
-Option Constant, AllScope
标签: powershell constants