ハッシュテーブルの配列を文字列の配列に変換するにはどうすればよいですか?ハッシュテーブルの配列を文字列の配列に変換する方法
ユーザーがリストからサーバーを選択できるようにする簡単なメニューを作成しようとしています。ここでは、リストのサンプルです:
$sqlServers = @(@{key="LOCALDB"; serverName="(localdb)\mssqllocaldb";
credentials="-E"; userEntry="L";
menuText="(L)ocaldb`t`t((localdb)\mssqllocaldb)"},
@{key="DEV"; serverName="DEV_SERVER";
credentials="-E"; userEntry="D";
menuText="(D)ev`t`t`t(DEV_SERVER)"},
@{key="TEST"; serverName="TEST_SERVER";
credentials="-E"; userEntry="T";
menuText="(T)est`t`t`t(TEST_SERVER)"})
これは次のように表示されます。
(L)ocaldb ((localdb)\mssqllocaldb)
(D)ev (DEV_SERVER)
(T)est (TEST_SERVER)
私はサーバの私のリストから有効なユーザーの選択肢のリストを読みたい場合、ユーザーが持っているキーをチェックその有効な選択肢のリストにあります。これは私がこれまで持っているものです:$userSelection (eg "d")
は決してありませんので、文字列にキャストするとき
function Get-UserSelection (
[Parameter(Mandatory=$True)]
$servers
)
{
Write-Host "Select the server to run the SQL scripts on (type a letter followed by the [Enter] key, or press CTRL+C to exit)"
foreach ($server in $servers)
{
Write-Host "`t" $server.menuText
}
$validSelections = $servers | Select-Object {$_.userEntry}
$userSelection = ""
while ($True)
{
$userSelection = Read-Host
ForEach ($validSelection in $validSelections)
{
if ($userSelection -eq $validSelection)
{
return $userSelection
}
}
Write-Host "Invalid selection. Please try again or press CTRL+C to exit"
}
}
問題ではなく、L
またはD
の値を有するので、その$validSelection
で、@{$_.userEntry=L}
のような値を持っています有効と見なされます。
私は問題は$validSelections
ではなく、カスタムオブジェクトの配列の文字列の配列になるように、どのように私はこれを修正することができますか?
$validSelections = $servers | Select-Object {$_.userEntry}
ラインであると仮定
ブリリアント、魅力のように働きました。ありがとう。 –