要阵列还是不阵列,这就是问题

 收藏

诚然,我不是一个强大的开发人员,但是我已经进行了一些研究,并且希望得到一个可靠的答案。我看到了多维数组,但是我不确定这是否是正确的答案

我有一个三部分的问题。数据库服务器,数据库和单位

有n个单位,有4个数据库服务器,有n个数据库(每1个单位1个数据库)。

因此,例如: Unit1在使用数据库DB_Unit1的数据库服务器4上 Unit2使用数据库DB_Unit2在数据库服务器4上 Unit3在使用数据库Unit3的数据库服务器2上(某些数据库未命名为DB_Unit) Unit4在使用数据库XYZ的数据库服务器1上 Unit5在使用数据库DB_Unit5的数据库服务器1上

我以为可以使用一个数组来存储每个代理商的每个字符串,但是我不确定它是如何工作的。

所以我试图编写一个使用所有这些功能的PowerShell脚本

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

我的结果是它将用每个单元的分配数据库查询每个数据库服务器。

关于数组如何工作的任何想法,或者是否有单独的方式关联此数据?

回复
  • I think this might be more what you are after. It should run n times, where n is the number of strings in $Units. There should be 5 results added to $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)
    }
    

    You should then be able to get the specific unit results by doing $SQLResults | where {$_.Unit -eq "Unit1"}