当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShellWhere-Object Cmdlet 过滤空值

作者:精品下载站 日期:2024-12-14 05:06:35 浏览:14 分类:玩电脑

使用 PowerShellWhere-Object Cmdlet 过滤空值


在 PowerShell 中处理数据时,经常会遇到空值,例如空字符串、空值或空数组。这些可能会干扰数据处理,可能需要过滤掉。 PowerShell 提供了功能强大的 cmdlet Where-Object,可用于根据属性值过滤对象。在本 PowerShell 教程中,我们将通过示例讨论如何使用 Where-Object 过滤掉空值。

要在 PowerShell 中过滤查询结果中的空值或 Null 值,请使用 Where-Object cmdlet 以及诸如 { $_ -ne "" } 之类的条件(对于字符串), { $_.PropertyName -ne "" } 用于对象属性,{ $_.Count -gt 0 } 用于数组,以及 { $_ -ne $null - 和 $_ -ne "" } 排除 null 和空字符串。这使您可以精确优化数据,确保脚本中仅处理非空且有意义的值。

PowerShellWhere-Object cmdlet 允许您为通过管道传递的每个对象指定一个计算结果为 $true$false 的脚本块。如果脚本块的计算结果为 $true,则该对象将沿管道传递;否则,它将被丢弃。

PowerShell Where-Object 空字符串

让我们从最简单的情况开始:使用Where-Object Cmdlet 在PowerShell 中过滤掉空字符串。 PowerShell 中的空字符串是不包含任何字符的字符串对象。以下是如何在 PowerShell 中从字符串数组中过滤掉空字符串的示例:

# Create an array of strings with some empty values
$stringArray = "New York", "", "Phoenix", "", "!"

# Filter out the empty strings
$nonEmptyStringArray = $stringArray | Where-Object { $_ -ne "" }

# Output the non-empty strings
$nonEmptyStringArray

在此示例中,$_ 表示数组中通过管道的每个字符串。 -ne 运算符用于检查 PowerShell 中的字符串是否不等于空字符串 ("")。

执行代码后,您可以在下面的屏幕截图中看到输出:

[玩转系统] 使用 PowerShellWhere-Object Cmdlet 过滤空值

PowerShell Where-Object 属性为空

有时,您可能会使用具有属性的对象,并且需要过滤掉特定属性为空的对象。您可以按照以下方法执行此操作:

# Create an array of custom objects
$objectArray = @(
    [PSCustomObject]@{ Name = "Alice"; Age = 30 },
    [PSCustomObject]@{ Name = ""; Age = 25 },
    [PSCustomObject]@{ Name = "Bob"; Age = $null }
)

# Filter out objects with an empty 'Name' property
$objectsWithName = $objectArray | Where-Object { $_.Name -ne "" }

# Output the objects that have a 'Name'
$objectsWithName

在上面的代码中,我们过滤掉 Name 属性为空字符串的对象。

您可以在下面的屏幕截图中看到输出:

[玩转系统] 使用 PowerShellWhere-Object Cmdlet 过滤空值

PowerShellWhere-对象空数组

过滤掉空数组需要稍微不同的方法。 PowerShell 中的空数组是计数为零的数组。这是一个例子:

# Create an array of arrays with some empty arrays
$arrayOfArrays = @(1, 2, 3), @(), @(4, 5), @()

# Filter out the empty arrays
$nonEmptyArrays = $arrayOfArrays | Where-Object { $_.Count -gt 0 }

# Output the non-empty arrays
$nonEmptyArrays

在本例中,我们在 PowerShell 中使用数组的 Count 属性来确定它是否为空。

您可以在下面的屏幕截图中看到输出:

[玩转系统] 使用 PowerShellWhere-Object Cmdlet 过滤空值

PowerShell 使用Where-Object 过滤 Null 或 Empty

空值也可以使用 Where-Object 进行过滤。 PowerShell 中的 Null 由 $null 表示。要在 PowerShell 中过滤掉 null 或空值,您可以结合检查 null 和空字符串。方法如下:

# Create an array with null and empty values
$mixedValues = $null, "", "PowerShell", $null, "Scripting"

# Filter out null and empty values
$validValues = $mixedValues | Where-Object { $_ -ne $null -and $_ -ne "" }

# Output the valid values
$validValues

该脚本将返回一个仅包含“PowerShell”和“Scripting”的数组。

您可以看到我使用 VS code 执行脚本后的输出。

[玩转系统] 使用 PowerShellWhere-Object Cmdlet 过滤空值

结论

使用 PowerShell 中的 Where-Object cmdlet,您可以过滤掉空字符串、具有空属性的对象、空数组以及 null 或空值。

在本 PowerShell 教程中,我通过各种示例解释了有关“PowerShell where-objectempty”的所有内容:

  • PowerShell where 对象为空字符串
  • PowerShell where-object 属性为空
  • PowerShell where-object 空数组
  • PowerShell 使用 where-object 过滤 null 或空

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯