我写了一个菜单,它将一个整数输入到selectPod函数中,然后我希望用服务器和数据库填充的$ sqlSettings对象可以在稍后在脚本中编写的一些SQL查询中使用。 我已经完成了一些棘手的工作,但似乎无法正常工作。
$SQLServer = @()
$Server = @()
$database = @()
function selectPod($podnumber) {
switch ($podnumber)
{
1 { $Server = "SQLSERVER01";
$Database = "DATABASE01"
}
2 { $Server = "SQLSERVER02";
$Database = "DATABASE02"
}
3 { $Server = "SQLSERVER03";
$Database = "DATABASE03"}
4 { $Server = "SQLSERVER04";
$Database = "DATABASE04"}
5 { $Server = "SQLSERVER05"
$Database = "DATABASE05"}
}
$properties = $params = @{
'Pod' = $podnumber;
'SQLServer' = $Server;
'Database' = $Database;
}
$sqlSettings = New-Object -TypeName PSObject -Property $properties
Write-Output $sqlSettings
}
selectPod 5
Write-Host "you are targeting " $($SQLSettings.POD) " which is SQLServer`
$($SQLSettings.server) and $($SQLSettings.database)" -ForegroundColor Green
我知道它正在工作,因为写输出很好。但是写主机显示它在函数之外还没有生存。
you are targeting which is SQLServer and
SQLServer Pod Database
--------- --- --------
SQLSERVER05 5 DATABASE05
我可能完全以错误的方式进行此操作,但是会得到任何帮助。
答案 0 :(得分:3)
函数中的变量仅限于该函数,除非另行声明。 将脚本/全局变量分配给结果,例如$ Global:SQLSettings-或更好的方法是将函数的值作为对象返回。
替换Write-Output $sqlSettings
使用Return $sqlSettings
...并查看运行函数时返回的值,例如
$Result = selectPod 5
答案 1 :(得分:0)
将您的Write-Host命令移至切换块。如果要将输出对象用于其他任何用途,请将其收集在这样的变量中:
$sqlSettings = selectpod 5