Мне может понадобиться второй набор идей здесь.
Вот чего нужно достичь: мне нужно выполнить задачу в Hashtable (Powershell) для каждого значения определенного ключа
Я пишу сценарий для включения репликации dfsr иЯ застрял, потому что
необходимо выполнить следующую команду:
New-DfsReplicationGroup -GroupName "" |New-DfsReplicatedFolder -FolderName "" |Add-DfsrMember -ComputerName Server1, Server2
Если я сам запускаю команду на терминале PowerShell, он работает без проблем.
На Hashtable у меня уже есть следующее:
Содержимое списка серверов группировки
Имя Значение
---- -----
Имя группы1 {Сервер1, Сервер2}
Имя группы2 {Сервер6, Сервер9}
Какойтеперь должно быть проще, верно?Думая как массив:
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 и значение Value: 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}
a Тест
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
Write-Host "n
n t VM_list:
t" $ ($ vm_list)
Надеюсь, что вы, ребята, можете помочь
Любая идея будет больше, чемоценили.