我正在使用Powershell所需的状态配置,并且有一个单独的定义文档(psd 1),我通过
$ConfigData = Import-PowerShellDataFile "$Path"
这里我想根据一个环境变量来更新节点名,整个psd 1文件显示它的类型为哈希表(name和basetype如下),然后allnodes显示为一个数组,然后nodename显示为另一个数组。
Hashtable System.Object
Object[] System.Array
Object[] System.Array
替换不持久(如下所示)。如果尝试将其重新分配给自身或副本,“在此对象上找不到属性”nodename“。请验证该属性是否存在yadda”
$ConfigData.AllNodes.NodeName -replace 'vms','vmp'
or
$ConfigDataHolder.AllNodes.NodeName = $ConfigData.AllNodes.NodeName -replace 'vms','vmp'
直接引用/赋值不会持续,下面的输出仍然是以前的服务器名,即使在克隆场景中也是如此。
$ConfigData.AllNodes.NodeName[2] = "something"
1条答案
按热度按时间ttcibm8c1#
[2]
),但是索引所应用的数组本身是 * 通过成员访问枚举 * 获得的,那么赋值实际上是在一个 * 临时数组 * 上操作的,因此实际上被悄悄地丢弃了;举个最小的例子:[2]
),或者在 * 循环 * 中,一个接一个地。一个简单的例子: