Я хочу запускать веб-запросы с разными строками запросов на основе предварительно обработанных данных.
Я могу довольно легко получить данные в формате таблицы ключей:
$ParamKeyTable = @{
"Param1" = @(1, 8, 16)
"Param2" = @(2, 5, 7 )
}
Затем я хотел бы зациклить все комбинации элементов, чтобы можно было выполнить «все возможные» запросы к веб-службе.
в качестве примера можно было бы использовать что-то вроде:
foreach ($Param1 in $ParamKeyTable['Param1']){
foreach ($Param2 in $ParamKeyTable['Param2']){
"Param1 = $('{0:00}' -f $Param1) ; Param2 = $('{0:00}' -f $Param2)"
$UseInUrl = @{
"Param1" = $Param1
"Param2" = $Param2
}
}
}
однако количество параметров, а также их имена могут время от времени меняться, в конце мне нужен только объект $UseInUrl
, поэтому любой формат получения перестановок и преобразования их в формат $UseInUrl
будетработать для меня.
Я пытался использовать цикл for
с вычисленным окончательным числом перестановок, а затем с помощью модуля определить, какое значение использовать с какого ключа, но не смог получитьэто сработало вообще, я также пытался зацикливаться на клавишах с отдельными счетчиками, но не нашел способа сделать это настолько масштабируемым, как хотелось бы.
самое близкое, что я получил, этонемногочто-то вроде этого, но я не смог найти разумного способа обработки приращения только первого счетчика ключа.
$ParamKeyTable = [ordered]@{
"Param1" = @(1, 8, 16)
"Param2" = @(2, 5, 7 )
}
$Counter = [ordered]@{}
foreach ($Key in $ParamKeyTable.Keys){
$Counter[$Key] = 0
}
do {
$UseInUrl = @(foreach ($Key in $ParamKeyTable.Keys){
if ($Counter[$Key] -le $ParamKeyTable[$Key].Count){
$Counter[$Key]++
}
#logic that actually makes this work goes here
[PSCustomObject]@{
$Key = $ParamKeyTable[$Key][$Counter[$Key]]
}
})
} while ($UseInUrl -ne $null)
любая помощь или совет будет высоко ценится.