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
我是 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