Невозможно разместить список баз данных до раздела выбора в PowerShell - PullRequest
0 голосов
/ 08 ноября 2018

Я запускаю этот код

$qry = "select * from sys.databases"
$potentialSourceDatabases = @(Invoke-Sqlcmd -ServerInstance $azureSQLServerDNS `
 -Database $azureDatabase -Username $SQLUsername -Password $SQLPassword `
 -Query $qry -QueryTimeout "1200") | select-object -expand Name

$potentialSourceDatabasesTable = @()
$databaseCounter = 1

foreach ($item in $potentialSourceDatabases){
    $itemProperties = @{
        DBNumber = $databaseCounter++
        DBName = $item
    }
    $potentialSourceDatabasesTable += New-Object -TypeName PsObject -Property $itemProperties
}

$potentialSourceDatabasesTable

$sourceDatabaseNumber = Read-Host -Prompt 'Please select the number of the desired source database'
$output = $potentialSourceDatabasesTable | Where-Object{$_.DBNumber -eq $sourceDatabaseNumber}  | select-object -expand DBName
Write-Host "You selected database is $sourceDatabaseNumber with name $output"

и я получаю следующий вывод:

Пожалуйста, выберите номер нужной исходной базы данных: 1

Вы выбрали 1 базу данных с именем master

DBNumber DBName


1 мастер
2 ProdCopy1
3 ProdCopy2

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

Я не против, если решение будет включать хеш-таблицу или другое формирование структуры. Я попытался использовать hastable:

$hashTable = @{}
$counter = 1

foreach ($item in $potentialSourceDatabases)
{
    $hashTable.Add($counter++,$item)
}
$getDatabaseNumber = Read-Host -Prompt 'Select source database number'
Write-Host "You selected database #$getDatabaseNumber $hashTable.Item($getDatabaseNumber)" 

но он вернулся Выберите исходный номер базы данных: 1 Вы выбрали базу данных # 1 System.Collections.Hashtable.Item (1)

Не могли бы вы помочь мне изменить код, чтобы список таблиц отображался до раздела выбора?

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