【问题标题】:Dynamic variable and value assignment in powershellpowershell中的动态变量和值分配
【发布时间】:2013-03-27 17:36:43
【问题描述】:

如何在运行时声明变量并为其赋值。

原因:我从 sql server 获取这些变量值,这些变量值本质上是可配置的

到目前为止我尝试过的代码

   [array]$varArray = @($($ServerName),$($HostName)) 

 foreach($varname in $varArray)
        {
          $varname = "some test value"
        }

Write-Host $ServerName
Write-Host $HostName

【问题讨论】:

  • @Ansgar 是的!我确实弄清楚了,同时我删除了编辑的部分。感谢你的帮助。 :D

标签: variables powershell


【解决方案1】:

使用动态命名变量的最简单方法是字典:

$vars = @{}  # create empty dictionary

# add key/value pairs to dictionary:
$vars["foo"] = 23
$vars["bar"] = "foobar"
$vars["baz"] = Get-Content C:\sample.txt

另一种方法是动态声明变量:

$name  = "foo"
$value = "bar"

New-Variable $name $value

echo $foo

或者您可以创建一个自定义对象并按照Kyle C 的建议添加属性。这种方法类似于字典,但在技术上有所不同。

【讨论】:

  • 请注意,对于第二种方法,您也可以使用Get-Variable -Name $name -ValueOnly。您实际上不需要知道动态变量的名称。
【解决方案2】:

您可以尝试向对象添加 NoteProperty。

$varname | Add-Member -type NoteProperty -name TestProperty -value "some test value" -PassThru

有关可以将成员添加到哪些类型的对象,另请参阅:What objects are suitable for Add-Member?

【讨论】:

  • 我尝试用 $varname | 替换 $varname = "some text value" Add-Member -type NoteProperty -name $varname -value "some test value" 但它不起作用。我很确定我错过了你的答案的上下文,你能帮我吗,因为我对 powershell 完全陌生。 (从 5 小时前开始)
  • 您是否有更多关于您要返回的对象类型的信息?你能做 $varname 吗?格式列表?
  • 所有在数组中定义的变量(例如:服务器名,主机名..等)都是字符串类型的。
  • 使用此代码 [array]$varArray = @($($ServerName),$($HostName)) foreach($varname in $varArray) { $varname = "一些测试值" 写主机 $varname | Format-List } 我得到一些测试值一些测试值
  • 您不想分配 $varname - 您可以尝试 $varname.GetType().FullName 而不分配任何东西吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 2011-01-11
  • 2018-12-29
  • 1970-01-01
相关资源
最近更新 更多