如何处理管道中的$null

2024-03-29

我的 PowerShell 代码中经常遇到以下情况:我有一个返回对象集合的函数或属性,或者$null。如果将结果推入管道,则还可以处理管道中的元素(如果):$null是唯一的元素。

例子:

$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }

如果没有功能($Project.Features 返回 $null),您将看到一行“功能名称:”。

我看到三种方法可以解决这个问题:

if ($Project.Features -ne $null)
{
  $Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
}

or

$Project.Features | Where-Object {$_ -ne $null) | Foreach-Object { 
  Write-Host "Feature name: $($_.Name)" 
}

or

$Project.Features | Foreach-Object { 
  if ($_ -ne $null) {
    Write-Host "Feature name: $($_.Name)" }
  }
}

但实际上我不喜欢这些方法,但您认为最好的方法是什么?


我不认为anyone喜欢“foreach ($a in $null) {}”和“$null | foreach-object{}”都迭代一次的事实。不幸的是,除了您所演示的方法之外,没有其他方法可以做到这一点。你可以更简洁:

$null | ?{$_} | % { ... }

the ?{$_}是简写where-object {$_ -ne $null} as $null评估为布尔表达式将被视为$false

我的个人资料中定义了一个过滤器,如下所示:

filter Skip-Null { $_|?{ $_ } }

Usage:

$null | skip-null | foreach { ... }

过滤器与函数相同,只是默认块是 process {} 而不是 end {}。

UPDATE:从 PowerShell 3.0 开始,$null不再作为集合进行迭代。耶!

-Oisin

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理管道中的$null 的相关文章

  • 如何在 PowerShell 中结束多行命令

    这应该很容易 但无法弄清楚 如何在 PowerShell 中结束多行命令 例如 如果我输入Get ChildItem 然后按回车键然后我得到一个 gt gt 我认为提示是继续命令 但如果我随后输入foreach Write Host nam
  • 如何以编程方式将数据写入Azure Blob存储?

    我正在使用下面的 PowerShell 脚本通过 REST API 调用从源读取 JSON 数据 现在我想将 Result 的数据加载到 Azure Blob 存储中 有什么想法吗 Params URI https 3ea5e53b 817
  • 如何在 Powershell 中为特定命令设置别名?

    有一个命令我经常输入 java jar foo param1 param2 param n 如何创建命令别名来运行此命令 如下所示 launch foo param3 where launch foo被翻译成完整的命令 你必须创建一个函数
  • ConvertTo-JSON 具有单个项目的数组

    我正在尝试创建一个 JSON 序列化数组 当该数组仅包含一项时 我得到一个字符串 而不是字符串数组 JSON 格式 多个项目 按预期工作 PS C gt one two ConvertTo JSON one two 单个项目数组 不符合预期
  • 在 PowerShell 中通过 UDP 发送和接收数据

    我正在尝试编写一个脚本来使用 PowerShell 进行测试和应用 测试应包括通过 UDP 向远程服务器发送字符串 然后读取该服务器的响应并对结果执行某些操作 我需要的唯一帮助是脚本的中间两个步骤 发送字符串 然后 接收响应 在端口 UDP
  • Powershell send-mailmessage - 向多个收件人发送电子邮件

    我有这个 powershell 脚本来发送带有附件的电子邮件 但是当我添加多个收件人时 只有第一个收件人收到消息 我已经阅读了文档 但仍然无法弄清楚 谢谢 recipients Marcel lt email protected cdn c
  • 将组成员身份从 AD 中的一个用户复制到另一用户

    我正在尝试构建一个脚本 它将组成员身份从 AD 中的一个用户复制到另一个用户 我正在尝试使用 powershell 来自动执行此任务 然而 我在为用户创建支票时陷入困境 换句话说 当我将组成员身份从一个用户复制到另一个用户时 我希望能够在添
  • 获取 SecureString 作为纯文本参数

    我正在尝试将 SecureString 作为纯文本参数获取到命令行 PowerShell 我知道安全字符串的形式是什么 例如 字符串 abc 将是安全字符串 71289371289 然后 我想将 71289371289 作为参数传递给脚本
  • powershell有method_missing()吗?

    我一直在研究 powershell 的动态功能 我想知道一些事情 powershell 中是否有类似于 Ruby 的 method missing 的东西 您可以在其中设置 捕获所有方法 来动态处理对对象上不存在的方法的调用 不 不是真的
  • 如何使用 powershell Az 模块为 Azure AD 应用程序提供所需权限的访问权限

    我正在尝试重写 powershell 脚本来创建 Azure AD 应用程序并为其分配权限 该脚本使用 AzureAD 模块 我想使用新的 Az 模块 这样我就可以在 Linux MacOS 上运行它 创建新应用程序很容易 New AzAD
  • 跳转到脚本中的某些位置

    有没有办法让脚本跳转到命令提示符中的特定位置 例如 GOTO 我想让脚本结束时跳到开头 tag1 Read Host Enter tag cls sc exe tag1 start RemoteRegistry cls Start Slee
  • 为什么“Get-ChildItem -File | Get-FileHash”有效?

    我对 Bash 比对 Powershell 更熟悉 有时我对后者的对象模型感到困惑 看着Get FileHash 的文档 https learn microsoft com en us powershell module microsoft
  • 保留 PowerShell 函数返回类型

    在我的 PowerShell 脚本中 我需要使用以下签名调用 NET 方法 class CustomList System Collections Generic List
  • 如何创建自定义 Powershell 运算符?

    是否可以在 Powershell 中创建自定义运算符 而且 我该怎么做呢 我搜索过谷歌 但没有任何结果 我特指一个中缀运算符 示例列表 包含 元素 我已经创建了 cmdlet 使用 Powershell 和 C 模块等 所以我只需要大概的内
  • 无法在 PowerShell 中完全解析 XML

    我有一个 XML 文件 我想解析该文件并检索特定信息 为了便于理解 下面是 XML 文件的屏幕截图 我想解析 XML 并为每个Item节点 检索屏幕截图中指示的字段 检索到的每个值都需要针对每个项目节点进行格式化 最后 我希望能够指定一个要
  • Powershell:如何捕获主机的输出

    我正在使用 powershell 自动执行一些与 TFS 中签出 合并相关的任务 当我打电话时 tf get recurse 我得到一堆关于正在检出的文件的数据滚动 该命令生成的最后一行 假设成功 是告知签到号码的行 我想解析它 以便稍后在
  • SMART 硬盘信息 Powershell [重复]

    这个问题在这里已经有答案了 我正在寻找一种通过可能的 powershell 来获取任何给定设备上硬盘驱动器的 SMART 数据的方法 我已经通过 CMD 和 powershell 尝试过 WMI 命令 但无法获得我正在寻找的适当数据 获取
  • 在 PowerShell 错误消息中使用 touch 命令创建新文件

    我的桌面上有一个使用 PowerShell 创建的目录 现在我尝试在其中创建一个文本文件 我确实将目录更改为新目录 然后输入touch textfile txt 这是我收到的错误消息 touch The term touch is not
  • 在Powershell中,如何设置$?不将该值发送到管道?

    PS gt gci C lt
  • 如何从计划任务中删除触发器

    我使用 PowerShell 中的任务计划程序 cmdlet 为 Perfmon 数据收集器集的计划任务配置触发器 我使用以下命令来修改计划任务并在服务器启动时启动数据收集器集 trigger New ScheduledTaskTrigge

随机推荐

  • 在设置中监听位置访问禁用/启用

    在 Android 操作系统中 在 Settings gt 位置服务 有一个名为 的切换按钮访问我的位置 可用于禁用和启用应用程序的位置信息访问 目前 我正在开发一个位置服务应用程序 我想知道 我怎样才能在我的Android项目中听到这个设
  • 使用 JAXB 获取布尔属性的 getter

    我正在尝试使用 jax ws 公开服务 但我得到的第一个惊喜是 Weblogic 不支持请求 响应对象的内部类 克服这种情况后here https stackoverflow com questions 144118 jaxb bindin
  • 提取window的所有子窗口

    如何提取一个窗口的所有子窗口 示例代码 Dim hWnd As IntPtr ProcessName MainWindowHandle For Each hWndChild As IntPtr In hWnd MsgBox hWndChil
  • Laravel Value() 函数未返回正确的值

    这可能是我在 Laravel 中遇到过的最奇怪的错误 我完全不知道发生了什么 基本上 我正在尝试获取查询的值 在此场景中 有 3 个图像 他们的标题是 第一图像标题 第二图像标题 和 第三图像标题 这是相关代码 public functio
  • 如何将 Metro UI 控件添加到 Visual Studio 中的工具箱?

    地铁控制 https github com viperneo winforms modernui https github com viperneo winforms modernui 我正在尝试使用地铁控件 并且我将从示例项目中尽我所能
  • 如何使用 iMagick 将一个图像叠加在另一个图像之上

    概述 我得到了两张图片 背景图像分辨率为 1920x1080p 叠加图像可以为任何小于 1920x1080p 的分辨率 背景图片 1920x1080 叠加图像 任何小于 结果图像 1920x1080 我试图将覆盖图像精确地覆盖在背景图像的中
  • 推荐的 Twig 文件扩展名

    Twig 模板有推荐的文件扩展名吗 我已经看到了以下使用情况 并希望与大多数其他开发人员保持一致 myTemplate html twig myTemplate twig myTemplate html myTemplate tmpl 通常
  • 如何使用jquery为第一个列表项应用活动类

    div class accordion ul class navigation li Lorem li li Ipsum li li Donor li ul ul class navigation li Test li li Demo li
  • 未找到“google-api-python-client”发行版,并且 pyinstaller 的应用程序需要该发行版

    我目前正在尝试使用 pyinstaller 构建一个应用程序 我收到了错误The google api python client distribution was not found and is required by the appl
  • 为什么我的 git 无法通过 gitolite 使用 git-daemon 推送到我的服务器

    当我使用 gitolite 时 忽略git daemon 我可以这样做git clone git xxx xxx 但是当我推送项目时 它显示了错误 Total 2 delta 0 reused 0 delta 0 remote Empty
  • 在python中将进度值发送到进度条

    在我的游戏中我有两个模块 岛 py它将岛屿加载到我的游戏中 第二个模块是gui py它在游戏开始之前处理 GUI 小部件 我的问题是如何将 island py 模块中的进度值发送到中创建的进度栏gui py module 编辑 还可以使用加
  • Google Appengine 游标

    我正在使用两者ndb and search api我的 python appengine 项目中的查询 我能找到的关于游标的唯一官方文档 https cloud google com appengine docs python datast
  • Java:CopyOnWriteArrayList 与 SynchronizedList

    有什么区别CopyOnWritearraylist and Collections synchronizedList 什么时候应该优先选择其中一个 CopyOnWriteArrayList当读取次数远远超过写入次数时 应使用列表 这是因为您
  • 特殊字符问题

    如何更改 Android 上的字体以允许显示 或 等特殊字符 实际上包含这些字符的字符串存储在sqlite数据库中 当您将文本加载到您的TextView 这对你有用吗 textView setText new String textFrom
  • 在字符串 Objective-c 中连接字符串

    我想将一个字符串放在一个字符串中 基本上是伪代码 first part of string varying string third part of string 我怎样才能在 Objective C 中做到这一点 有没有办法在 obj c
  • Erlang:如何从体内引用匿名函数?

    In Erlang http en wikipedia org wiki Erlang programming language 有没有办法引用当前正在执行的函数 这对于产生无限循环很有用 spawn fun gt do something
  • Azure 搜索和破折号

    我正在使用 Azure 搜索并尝试对文档执行搜索 看起来好像是这样做的 indexes blah docs api version 2015 02 28 search abc 1003 返回与此相同的结果 indexes blah docs
  • 在 OpenSceneGraph 中创建球体(使用 osg::Geometry)

    我花了相当长的时间才使其正常工作 但我的球体无法显示 使用以下代码来实现我的功能 使用 Visual C 在 Opengl 中创建 3D 球体 https stackoverflow com questions 5988686 creati
  • 禁用 jQuery 移动按钮

    我正在尝试禁用此按钮 a Next a 单击事件不应触发 并且按钮 UI 还应反映按钮禁用状态 我尝试过以下方法 next attr disabled true next attr disabled disabled next button
  • 如何处理管道中的$null

    我的 PowerShell 代码中经常遇到以下情况 我有一个返回对象集合的函数或属性 或者 null 如果将结果推入管道 则还可以处理管道中的元素 如果 null是唯一的元素 例子 Project Features Foreach Obje