Return 来自 powershell 嵌套循环的变量

Return variables from nested loops in powershell

我是 PowerShell 初学者,我只想知道如何 return 以正确的方式从嵌套循环中获取数据。我有一个简单的任务来获取 AWS Glue 中的数据库列表,然后从这些数据库中获取表列表并创建一个包含以下格式结果的文件:

| DBname   | TableName      |
| -------- | -------------- |
| DB1      | Table1         |
| DB1      | Table2         |
| DB1      | Table3         |
| DB2      | Table1         |
| DB2      | Table2         |

这是我写的代码:

$dbs = aws glue get-databases  --region eu-central-1 --profile test | ConvertFrom-Json 
foreach ($db in $dbs) {
      
        foreach ($dbname in $db.DatabaseList.Name) {
                $tables = aws glue get-tables --database-name $dbname  --region eu-central-1 --profile test | ConvertFrom-Json 
                $resuts = $dbname, ",", $tables.TableList.Name      
                Write-Host $resuts   
        }
}

结果如下:

| DBname   | TableName                     |
| -------- | ----------------------------- |
| DB1      | Table1 Table2 Table3          |
| DB2      | Table1 Table2                 |

如何return数据以正确的格式? 由于一些数据库里面没有任何表,我不能使用 Export-CSV 命令

为每个 table 创建一个新对象,每个对象都有数据库和 table 名称作为属性,然后将外循环的所有输出分配给一个变量:

$dbs = aws glue get-databases  --region eu-central-1 --profile test | ConvertFrom-Json 
$tableObjects = foreach ($db in $dbs) {
    foreach ($dbname in $db.DatabaseList.Name) {
        $tables = aws glue get-tables --database-name $dbname  --region eu-central-1 --profile test | ConvertFrom-Json 
        foreach($tableName in $tables.TableList.Name){
            [pscustomobject]@{
                DBName = $dbname
                TableName = $tableName
            }
        }
    }
}

现在 $tableObjects 将在格式化为 table:

时提供所需的关于
PS ~> $tableObjects |Format-Table

DBname   TableName     
------   ---------
DB1      Table1        
DB1      Table2        
DB1      Table3        
DB2      Table1        
DB2      Table2