在这里我可能需要第二组想法。
这是要实现的目标: 我需要在哈希表(Powershell)中对特定键的每个值执行任务
我正在编写启用dfsr复制的一部分的脚本,但我被困住了,因为
需要执行以下命令:
New-DfsReplicationGroup -GroupName“” | New-DfsReplicatedFolder -FolderName“” | Add-DfsrMember-计算机名Server1,Server2
如果我运行该命令,它将在powershell终端上自动运行,而不会出现任何问题。
在哈希表上,我已经具有以下内容:
分组服务器列表的内容
名称值
---- -----
组名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]
结果应为'5'或'6',如果(1 + 5)
$num.GetEnumerator() | Sort-Object -Property Value | Where-Object {$_.Key}
名称值
---- -----
d {1,4,5}
测试
b Test2
c Test3
#$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 |哪里对象{$ num.ContainsKey(“ d”)} | %ToString
写主机“ n
n t VM_list:
t” $($ vm_list)
希望你们能帮忙
答案 0 :(得分:0)
所以我找到了答案,简直不敢相信这可能使我失去了头脑。
我正在为社区共享一个可能的解决方案;)
”总有多种方法可以到达某个地点,因此可以 成为一个;)”
$script:vmlist = @{} #Hashtable
$vm_list = @() #Array
$vmlist.d = @()
$vmlist.d+= 'Server1'
$vmlist.d+= 'Server2'
if ($vmlist.ContainsKey("d")) #Looking for a particular Key
{
$vmlist['d']
$vm_list+= $vmlist['d']
Write-Host "`n`n`t VM_list:`t`t $($vm_list)`n`n$($vm_list[0])`n$($vm_list[1])`n$($vm_list[2])"
Test-Connection $vm_list[0+1]
}
else {Write-Host "Value not found"}
打印哈希表的内容
VM_list: Server1 Server2
打印新数组的内容,请注意它将包含键d中的值
VM_list[0]:Server1
VM_list[1]:Server2
结果:
源目标IPV4地址IPV6地址字节时间(ms)
------ ----------- ----------- ----------- --------- -
服务器源Server2 10.114.x.y 32 0
服务器源Server2 10.114.x.y 32 0
服务器源Server2 10.114.x.y 32 0
服务器源Server2 10.114.x.y 32 0
希望你们可以使用它
问候 卡耶塔诺(JCayetano)