L oop массив и хранить все результаты - PullRequest
0 голосов
/ 27 марта 2020

По общему признанию я не сильный разработчик, но я провел некоторое исследование, и я хочу получить solid ответ на мою проблему. Я вижу многомерные массивы, но я не уверен, что это правильный ответ

У меня есть проблема из трех частей. Сервер базы данных, база данных и единицы измерения

Существует n единиц, имеется 4 сервера базы данных, имеется n баз данных (1 база данных на 1 единицу).

Так, например:

  • Unit1 находится на сервере базы данных 4 с использованием базы данных DB_Unit1
  • Unit2 находится на сервере базы данных 4 с использованием базы данных DB_Unit2
  • Unit3 находится на сервере базы данных 2 с использованием базы данных Unit3 (некоторые базы данных не названы DB_Unit)
  • Unit4 находится на сервере базы данных 1 с использованием базы данных XYZ
  • Unit5 находится на сервере базы данных 1 с использованием базы данных DB_Unit5

Я предположил, что мог бы использовать массив для хранения каждая строка для каждого агентства, но я не уверен, как это работает.

Поэтому я пытаюсь написать сценарий PowerShell, который использует все эти функции

$units = ("Unit1","Unit2","Unit3","Unit4","Unit5")
FOREACH ($Unit in Units){
Invoke-Sqlcmd -ServerInstance $DatabaseServer -Database $Database -Query "Select * from tbl1"
}

Мой результат таков: Будет ли запрашивать каждый сервер базы данных с назначенной базой данных для каждого модуля.

Есть какие-либо идеи о том, как это работает с массивом или есть отдельный способ связать эти данные?

1 Ответ

0 голосов
/ 27 марта 2020

Я думаю, что это может быть больше, чем вы хотите. Он должен запускаться n раз, где n - количество строк в $Units. К $SQLResults.

$Units= ("Unit1","Unit2","Unit3","Unit4","Unit5")
$SQLResults = New-Object System.Collections.ArrayList

ForEach ($Unit in $Units){
    switch ($Unit) {
        "Unit1" { $DatabaseServer = "Database Server 4";$Database = "DB_Unit1" }
        "Unit2" { $DatabaseServer = "Database Server 4";$Database = "DB_Unit2" }
        "Unit3" { $DatabaseServer = "Database Server 2";$Database = "Unit3" }
        "Unit4" { $DatabaseServer = "Database Server 1";$Database = "XYZ" }
        "Unit5" { $DatabaseServer = "Database Server 1";$Database = "DB_Unit5" }
    }
    $UnitResults = Invoke-Sqlcmd -ServerInstance $DatabaseServer -Database $Database -Query "Select * from tbl1"
    $UnitResults | Add-Member -MemberType NoteProperty -Name "Unit" -Value $Unit
    $SQLResults.Add($UnitResults)
}

должно быть добавлено 5 результатов. После этого вы сможете получить указанные c результаты, выполнив $SQLResults | where {$_.Unit -eq "Unit1"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...