1
해시 테이블 배열을 문자열 배열로 변환하려면 어떻게해야합니까?해시 테이블 배열을 문자열 배열로 변환하는 방법
사용자가 목록에서 서버를 선택할 수있는 간단한 메뉴를 만들려고합니다.
(L)ocaldb ((localdb)\mssqllocaldb)
(D)ev (DEV_SERVER)
(T)est (TEST_SERVER)
내가 서버 내 목록에서 올바른 사용자 선택의 목록을 읽을 수는, 다음 사용자가 가지고있는 키를 확인 :
$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)"})
이이 같이 표시됩니다 : 여기에 목록의 샘플입니다 누른 것은 유효한 선택 목록에 있습니다. 이것은 내가 지금까지있어 무엇을 다음 $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}
에 가정?
은, 마치 마법처럼 일을. 감사. –