У меня есть скрипт, который содержит список параметров строк подключения к некоторым базам данных.Сценарий выполняет следующие действия:
- Принимает имя базы данных в качестве ввода, используя «Read-Host»
- Использует ввод для удовлетворения любого из условий If / ElseIf и ...
- подключается к базе данных
- запускает сценарий SQL для обновления БД
Вот пример кода:
param (
# Connection Strings
[string] $TestDb1_ConnectStr = "username/pwd@//hostname1:port1/sid1",
[string] $TestDb2_ConnectStr = "username/pwd@//hostname2:port2/sid2",
[string] $TestDb3_ConnectStr = "username/pwd@//hostname2:port3/sid3",
[string] $SQL_Path = "C:\bin\sql"
)
$Environment = Read-Host "Please enter environment name..."
If ($Environment -eq "TestDb1")
{
function Invoke-SqlPlus($file) { (gc $file) | sqlplus $TestDb1_ConnectStr }
new-alias sql Invoke-SqlPlus
sql $SQL_Path\$Environment"_sometable.sql"
}
ElseIf ($Environment -eq "TestDb2")
{
function Invoke-SqlPlus($file) { (gc $file) | sqlplus $TestDb2_ConnectStr }
new-alias sql Invoke-SqlPlus
sql $SQL_Path\$Environment"_sometable.sql"
}
ElseIf ($Environment -eq "TestDb3")
{
function Invoke-SqlPlus($file) { (gc $file) | sqlplus $TestDb3_ConnectStr }
new-alias sql Invoke-SqlPlus
sql $SQL_Path\$Environment"_sometable.sql"
}
...
У меня фактически есть 14 баз данных, к которым я могу подключиться, и вместо 14 отдельных условий If / ElseIf я хочу иметь возможность использовать входные данные Read-Host для передачи строки подключения и сценария SQL.В настоящее время я могу использовать ввод для передачи в сценарии SQL, но я не могу передать в строке подключения БД.
Я хочу сделать что-то вроде этого:
function Invoke-SqlPlus($file) { (gc $file) | sqlplus $Environment_ConnectStr }
new-alias sql Invoke-SqlPlus
sql $SQL_Path\$Environment"_sometable.sql"
Однако я не уверен, как я могу использовать вход из Read-Host, чтобы получить значение из списка параметров дляСтрока подключения.Как мне этого добиться?