から返されたプライマリ、セカンダリ、およびテーブルから第三紀:は、私がDeviceNameのを引っ張るSQLクエリを持っているDBクエリ
$SQLQuery= (Invoke-Sqlcmd -Serverinstance $ServerInstance -Database $Database -Query "select DeviceName, Primary, Secondary, Tertiary from dbo.Table")
私はその後、プライマリとハッシュテーブルにそれらのエントリを投げます値の配列として三紀/ /セカンダリ:
$DeviceList = @{}
foreach ($item in $SQLQuery)
{
if($item.Primary -and $item.Secondary -and $item.Tertiary)
{
$DeviceList += @{$item.DeviceName = "$($item.Primary)", "$($item.Secondary)", "$($item.Tertiary)"}
}
elseif ($item.Primary -and $item.Secondary -and !$item.Tertiary)
{
$DeviceList += @{$item.DeviceName = "$($item.Primary)", "$($item.Secondary)"}
}
elseif ($item.Primary -and !$item.Secondary -and !$item.Tertiary)
{
$DeviceList += @{$item.DeviceName = "$($item.Primary)"}
}
私はに実行している問題は、SQLクエリがNULL
されていない空白の結果を返すことができるということです。これは、このような$DeviceList
外観は作る:
elseif ($item.Primary -and !$item.Secondary -and !$item.Tertiary)
{
if($item.Primary -ne '')
{
$DeviceList += @{$item.DeviceName = "$($item.Primary)"}
}
}
しかし、それは信じられないほどの繰り返しだし、時間がかかる:
$devicelist = @{
"Device1" = "[email protected]";
"Device7" = "[email protected]";
"Device8" = "[email protected]";
"Device2" = "[email protected]", "[email protected]";
"Device3" = "[email protected]", "";
"Device4" = "[email protected]", "", "[email protected]";
"Device5" = "[email protected]", "[email protected]", "[email protected]";
"Device6" = "[email protected]", "[email protected]", ""
}
私は声明のような場合には、繰り返しに投げることによって、これらをフィルタリングすることができます。私はそれらを無視するようにSQLクエリを変更することもできますが、SQLクエリを単純にしてPowerShellでフィルタリングするほうがはるかに好きです。それを行うより簡単な方法があります。 、私の問題は意味をなさない場合
$devicelist = @{
"Device1" = "[email protected]";
"Device7" = "[email protected]";
"Device8" = "[email protected]";
"Device2" = "[email protected]", "[email protected]";
"Device3" = "[email protected]";
"Device4" = "[email protected]", "[email protected]";
"Device5" = "[email protected]", "[email protected]", "[email protected]";
"Device6" = "[email protected]", "[email protected]"
}
してください:私が探しています
最終的な結果は、エントリが空白の場合、それはちょうどそう$DeviceList
は次のようになり、スキップされることをです私に知らせてください、私は明確にしようとします。いつものように、ありがとう!
Andy、実際には、$ arr = @ {}を '$ arr = @()'に変更した後、最初の答えは完全に機能しました。あなたは私の人生をずっと簡単にしました、ありがとう! – Nick