Как зациклить два аргумента в одном цикле foreach после окончания первого аргумента? - PullRequest
1 голос
/ 06 марта 2019

Предположим, у меня есть два разных типа серверов

Function Query($Query) {
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Server=$Server;Initial Catalog=$Database;Integrated Security=SSPI" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
$SqlCmd.Connection = $SqlConnection 
$SqlCmd.CommandText = $Query 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet 
$a=$SqlAdapter.Fill($DataSet)
$SqlConnection.Close() 
$DataSet.Tables[0] }

$servers_typeA = Query "SELECT DISTINCT [server_typeA] FROM table" | Select -ExpandProperty server_typeA;
$servers_typeB = Query "SELECT DISTINCT [server_typeB] FROM table" | Select -ExpandProperty server_typeB;

У меня есть forloop, который на данный момент проходит через серверы типа A и отображает соединения баз данных для каждого из серверов в $servers_typeA

foreach($server in $servers_typeA)

вместо дублирования одного и того же цикла для типа B, поэтому

foreach($server in $servers_typeB)

Есть ли способ, которым я могу сказать forloop циклу typeB после A?

По сути, как это?

foreach($server in $servers_typeA then $servers_typeB)

1 Ответ

2 голосов
/ 06 марта 2019

Вы можете просто объединить массивы с помощью +, чтобы зациклить их объединенные элементы;упрощенный пример:

$servers_typeA = 'foo', 'bar'
$servers_typeB = 'baz', 'bam'

foreach ($server in $servers_typeA + $servers_typeB) {
  "processing server $server..."
}

Примечание : Если существует вероятность того, что LHS конкатенации на самом деле является скаляром, а не массивом, используйте @(...) вокруг него (не обязательно дляRHS): @($servers_typeA) + $servers_typeB

Вышеуказанные выходы:

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