Arrays 从数组中删除空行

Arrays 从数组中删除空行,arrays,powershell,Arrays,Powershell,我尝试删除数组中的空行或值,例如,如果$DBLevel的输出为空,则应删除孔行。有没有一个简单的方法可以做到这一点 谢谢 $vmname= "srvsql009" $DBType = "sql" $DBLevel = "" $style = "blue" $myCol = @() $x = "" | Select 'Name','DB-Type','DB-Level','Style' $

我尝试删除数组中的空行或值,例如,如果$DBLevel的输出为空,则应删除孔行。有没有一个简单的方法可以做到这一点

谢谢

$vmname= "srvsql009"
$DBType = "sql"
$DBLevel = ""
$style = "blue"


$myCol = @()

 $x = "" | Select 'Name','DB-Type','DB-Level','Style'
 $x.Name = $vmname
 $x.'DB-Type' = $DBType
 $x.'DB-Level' = $DBLevel
 $x.'Style' = $style
 

 $myCol += $x 



 $myCol 
IsPublic IsSerial名称基类型



True Object[]System.Array

假设在
$mycl
变量中有这样的结果

PS> $myCol

Name      DB-Type   DB-Level Style
----      -------   -------- -----
srvsql009 sql                blue 
SQLSRV200 cosmos    ALPHA    RED  
可以使用
Where Object
命令筛选数组中的项,如下所示:

PS>  $myCol | Where DB-Level -ne ""

Name      DB-Type DB-Level Style
----      ------- -------- -----
SQLSRV200 cosmos  ALPHA    RED  

PowerShell比较运算符与大多数其他编程语言不同,这意味着您不能使用
==
来比较equals,或者
继续我的评论

从简单数组(
Object[]
)中删除元素既耗时又占用内存,因为数组的长度是固定的,删除元素时,需要在内存中重建整个数组

如果您有一个需要能够从中删除项目的集合,最好使用
[System.Collections.Generic.List[object]]

示例集合(遵循您的语法)

$list
现在包含

Name      DB-Type DB-Level Style
----      ------- -------- -----
srvsql009 sql          120 blue 
srvsql010 sql          121 blue 
srvsql011 sql          122 blue 
srvsql012 sql          123 blue 
srvsql013 sql          124 blue 
现在,如果要删除此列表中的一项,可以使用其索引:

$list.RemoveAt(2)  # removes item 'srvsql011'
结果:

Name      DB-Type DB-Level Style
----      ------- -------- -----
srvsql009 sql          120 blue 
srvsql010 sql          121 blue 
srvsql012 sql              blue 
srvsql013 sql          124 blue 
Name      DB-Type DB-Level Style
----      ------- -------- -----
srvsql009 sql          120 blue 
srvsql010 sql          121 blue 
srvsql011 sql          122 blue 
srvsql013 sql          124 blue 
或通过确定要删除的对象来删除:

$x = $list | Where-Object { !$_.'DB-Level' }
$list.Remove($x)
结果:

Name      DB-Type DB-Level Style
----      ------- -------- -----
srvsql009 sql          120 blue 
srvsql010 sql          121 blue 
srvsql012 sql              blue 
srvsql013 sql          124 blue 
Name      DB-Type DB-Level Style
----      ------- -------- -----
srvsql009 sql          120 blue 
srvsql010 sql          121 blue 
srvsql011 sql          122 blue 
srvsql013 sql          124 blue 

您的代码中没有
$ITLevel
。。如果您想要一个稍后决定从中删除元素的集合,我建议使用,或者如果不满足条件,就不要添加到数组中。嘿,抱歉,复制和粘贴失败。现在代码是正确的。这是工作流程的一部分,有时可能会出现变量为空的情况,如本例所示。我们没有收到您的来信。。给出的答案解决了你的问题吗?如果是,请点击✓ 左边的图标。这将帮助其他有类似问题的人更容易找到它,并有助于激励其他人回答你将来可能遇到的任何问题。嗨,谢谢。我知道,但它可能是,例如,在下一次运行中,“Style”为空,因此这将不起作用。在阵列中,如果这样做更容易,则不会有多台服务器