【发布时间】:2019-05-27 18:40:51
【问题描述】:
我在这里可能需要第二组想法。
这就是要实现的目标: 我需要在哈希表(Powershell)中对特定键的每个值执行一项任务
我正在编写启用 dfsr 复制的部分脚本,但我被卡住了,因为
需要执行以下命令:
New-DfsReplicationGroup -GroupName "" | New-DfsReplicatedFolder -FolderName "" | Add-DfsrMember -ComputerName Server1,Server2
如果我在 powershell 终端上运行它自己的命令没有任何问题。
在 Hashtable 上,我已经有了以下内容:
分组服务器列表的内容
名称 值
---- -----
组名 1 {Server1, Server2}
组名 2 {Server6, Server9}
现在应该更容易了吧? 像数组一样思考:
Write-Verbose "Configuring a full-DFSr connection "
for ($i = 0 ; $i -lt $server_list.Count ; $i++)
{
for ($j = $i + 1 ; $j -lt $server_list.Count ; $j++)
{
Write-Verbose ("Adding bidirectional connections between the member computers named {0} and {1}" -f $server_list[$i],$server_list[$j])
$dfs_connection_status = Add-DfsrConnection -GroupName $GroupName -SourceComputerName $server_list[$i] -DestinationComputerName $server_list[$j]
Write-Output $dfs_connection_status
}
}
但是,一旦找到密钥,我无法弄清楚如何操作内容
然后我从那个脚本部分休息了一下,决定把它分解成一个简单的 a+b
看看下面的内容:
$($key.Name) 在哪里 键值:d,值内容为:1,4,5
如下几行
$num = @{a= "Test"
b= "Test2"
c= "Test3"
}
$num.d = @() #adds to an array
$num.d+= '1'
$num.d+= '4'
$num.d+= '5'
$result= $num[0]+$num[1] or if decided $result= $num[0]+$num[2]
如果 (1+5),结果应该是 '5' 或 '6'
$num.GetEnumerator() | Sort-Object -Property Value | Where-Object {$_.Key}
名称值
---- -----
d {1, 4, 5}
测试
b 测试2
c 测试3
#$sum+= $num.ContainsKey("d")+$num.ContainsKey("d")+1
$num.GetEnumerator() | Sort-Object -Property Value | Where-Object {$_.Key}
if ($num.ContainsKey("d")) { $num['d'] }
如果找到 d 键,则根据需要操作值内容。一旦找到组名,就可以考虑我的 dfsr 原始脚本启用双向复制 Server1 -> Server2 和 Server2 -> Server1
我无法让它工作,所以我决定创建一个新数组(可能不是真的需要)我的想法没问题所以你找到了 d 键现在让我们将所有内容移动到一个新数组中,以便我们可以操作它。
$vm_list+= $num.Values | Where-Object {$num.ContainsKey("d")} | % ToString
写主机 "nnt VM_list:t" $($vm_list)
希望大家帮忙
任何想法都会不胜感激。
【问题讨论】: