函数中的switch语句
Switch statement in function
我编写了一个菜单,它将一个整数输入到 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
我知道它可以正常工作,因为写入输出很好。但是write-host show在函数外是无法存活的
you are targeting which is SQLServer and
SQLServer Pod Database
--------- --- --------
SQLSERVER05 5 DATABASE05
我这样做的方式可能完全错误,但如有任何帮助,我们将不胜感激。
函数内的变量仅限于函数,除非您另外声明。
为结果分配一个 script/global 变量,例如$Global:SQLSettings - 或者更好的方法是 return 函数中的值作为对象。
替换Write-Output $sqlSettings
随着 Return $sqlSettings
...然后查看 运行 函数时 return 的值,例如
$Result = selectPod 5
将您的 Write-Host 命令移动到开关块中。如果您想将输出对象用于其他任何用途,请将其收集在一个变量中,如下所示:
$sqlSettings = selectpod 5
我编写了一个菜单,它将一个整数输入到 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
我知道它可以正常工作,因为写入输出很好。但是write-host show在函数外是无法存活的
you are targeting which is SQLServer and
SQLServer Pod Database
--------- --- --------
SQLSERVER05 5 DATABASE05
我这样做的方式可能完全错误,但如有任何帮助,我们将不胜感激。
函数内的变量仅限于函数,除非您另外声明。 为结果分配一个 script/global 变量,例如$Global:SQLSettings - 或者更好的方法是 return 函数中的值作为对象。
替换Write-Output $sqlSettings
随着 Return $sqlSettings
...然后查看 运行 函数时 return 的值,例如
$Result = selectPod 5
将您的 Write-Host 命令移动到开关块中。如果您想将输出对象用于其他任何用途,请将其收集在一个变量中,如下所示:
$sqlSettings = selectpod 5