【发布时间】:2018-12-20 01:22:39
【问题描述】:
我试图弄清楚如何从对象本身获取 powershell 变量的名称。
我这样做是因为我正在对通过引用传递给函数的对象进行更改,所以我不知道该对象将是什么,我正在使用 Set-Variable cmdlet 将该变量更改为读取仅限。
# .__NEEDTOGETVARNAMEASSTRING is a placeholder because I don't know how to do that.
function Set-ToReadOnly{
param([ref]$inputVar)
$varName = $inputVar.__NEEDTOGETVARNAMEASSTRING
Set-Variable -Name $varName -Option ReadOnly
}
$testVar = 'foo'
Set-ToReadOnly $testVar
我查看了很多类似的问题,但找不到任何可以具体回答的问题。我想完全在函数内部使用变量——我不想依赖传递额外的信息。
另外,虽然设置只读可能有更简单/更好的方法,但我一直想知道如何可靠地从变量中提取变量名,所以请专注于解决这个问题,而不是我的应用程序在这个例子中。
【问题讨论】:
-
它不是重复的。不过谢谢,dawg。
-
只需传递变量名而不是变量 (
Set-ToREadOnly 'testVar') 即可Set-Variable -Name $inputVar -Option ReadOnly -Scope Global。我认为不可能从变量或引用中确定变量的名称。
标签: powershell variables pass-by-reference readonly variable-names