我有一个SQL查询其拉设备名称,小学,中学和高等教育返回从表:如何筛选空白条目从数据库查询
$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]", ""
}
我可以在重复抛出的if语句,如过滤这些。我也可以修改SQL查询以忽略这些,但我更愿意保持SQL查询简单并在PowerShell中进行过滤。必须有一个更简单的方法来做到这一点。
,我寻找的最终结果是,如果该条目是空白的,它只是被跳过,所以$DeviceList
应该是这样的:
$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]"
}
如果我的问题没有意义,请让我知道,我会尽力澄清。一如既往,谢谢!
Andy,在我将'$ arr = @ {}'更改为'$ arr = @()'后,实际上您的第一个答案完美奏效。你让我的生活变得如此简单,非常感谢你! – Nick