Передайте 2 параметра в powershell

#sql-server #powershell

#sql-сервер #powershell

Вопрос:

Я пытался запустить SQL-файл через powershell. Для скрипта необходимо передать 2 параметра через powershell. Я написал, как показано ниже:

 $DBScriptFile = "C:powershellPower.sql"
$sqlParameters =@("id=1,2", "val1=2,3")
foreach($i in $sqlParameters)
{
Invoke-Sqlcmd  -ServerInstance ServerName -Database test -Username "test" -Password "test" -InputFile $DBScriptFile -Variable $sqlParameters
}

T-sql SCRIPT: select * from t1 where id in($(id)) and val1 in($(val1))
 

Прямо сейчас я получаю вывод ниже:

 id val1 
-- ---- 
 1    2 
 2    2 
 1    2 
 1    3 
 2    3 
 1    2 
 2    2 
 1    2 
 1    3 
 2    3 
 

Я хочу, чтобы для каждого запуска в цикле параметры передавались в сочетании, например, для первого запуска значение должно быть передано 1 и 2, для второго запуска значение должно быть передано 2 и 3.
Ожидаемый результат должен быть примерно таким.

 id val1 
-- ---- 
 1    2 
 1    2 
 2    3 
 1    2 
 1    2 
 2    3 
 

Из созданного мной скрипта я получаю все комбинации обоих аргументов.
Я довольно новичок в powershell и не смог найти много информации об этом через Интернет. Не могли бы вы, пожалуйста, помочь мне разобраться в этом?

Комментарии:

1. каким будет ввод для идентификатора во втором запуске

2. @TheGameiswar Ожидаемое значение равно 2 для id и 3 для val1

Ответ №1:

Найдено решение: нам нужно использовать вложенный массив

 $DBScriptFile = "C:powershellPower.sql"
$sqlParameters =(("id1=1", "val1=2"), ("id1=2", "val1=3"),("id1=2", "val1=2"))
foreach($i in $sqlParameters)
{
Invoke-Sqlcmd  -ServerInstance ServerName -Database test -Username "test" -Password "test" -InputFile $DBScriptFile -Variable $i
}