通过管道将 JSON 转换为 ForEach 时的奇怪行为

2023-12-21

为什么以下不迭代元素System.object[]返回的数组ConvertFrom-Json:

 ConvertFrom-Json '[1, 2, 3]'   | ForEach-Object  {": $_"}

但这确实:

(ConvertFrom-Json '[1, 2, 3]')  | ForEach-Object  {": $_"}

在我看来,在第一种情况下,整个数组作为参数传递给ForEach但我不清楚原因。

更新:这似乎是 Powershell 中与数组转换相关的错误,请参阅here https://github.com/PowerShell/PowerShell/issues/3153 and here https://stackoverflow.com/a/38212718/282783.


复制我的答案here https://stackoverflow.com/a/49136853/696808:

ConvertFrom-Json管道有一些奇怪的行为。问题是ConvertFrom-Json将 JSON 数组包装在一个数组中,然后传递整个数组作为一项进行下去。这在大多数情况下都很好,但如果最外层是 JSON 数组,则整个数组将作为单个对象传递到管道中。

比较:

PS> ConvertFrom-Json '[1, 2, 3]' | ForEach-Object  {": $_"}
: 1 2 3

PS> (ConvertFrom-Json '[1, 2, 3]') | ForEach-Object  {": $_"}
: 1
: 2
: 3

PS> $x = ConvertFrom-Json '[1, 2, 3]'
PS> $x | ForEach-Object  {": $_"}
: 1
: 2
: 3
PS> ,$x | ForEach-Object  {": $_"}
: 1 2 3

请注意,在最后一个示例中,我们可以使用一元逗号运算符重复该问题。

该问题已报告here https://github.com/PowerShell/PowerShell/issues/3424适用于 PowerShell 核心 6。

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

通过管道将 JSON 转换为 ForEach 时的奇怪行为 的相关文章

  • Powershell强类型环境变量

    我想设置一个强类型环境变量 当我使用 env 时它似乎 丢失 了它的类型 在原始函数中它工作正常 function Create ThisCrap Microsoft ApplicationInsights TelemetryClient
  • PowerShell 中的 SVN 输出编码

    我正在尝试在 PowerShell 脚本内的字符串中捕获 SVN 日志 在命令行上 输出的编码是正确的 但是当我将其捕获到字符串中时 它就不是正确的 PS C sandbox gt svn log r1804 https myserver
  • 如何在 PowerShell 中处理命令行参数

    处理命令行参数的 最佳 方法是什么 似乎有几个关于 最佳 方法是什么的答案 因此我陷入了如何处理像这样简单的事情上 script ps1 n name d domain AND script ps1 d domain n name 有没有一
  • 在 powershell 3 中美化 json

    给定一个标准 json 字符串值 jsonString baz quuz cow moo cud foo bar 我怎样才能让这一切都漂亮的换行符 最好没有强力正则表达式 到目前为止我发现的最简单的方法是 jsonString Conver
  • 什么是@”运算符?

    我在互联网上搜索了这意味着什么 包括 and 单独 正是在这个code https gist github com jakeballard 11240204 Win32ShowWindowAsync Add Type memberDefin
  • Winform 启动后隐藏或最小化 powershell 提示符

    我编写了一个简单的 powershell 脚本来启动 winform 在 powershell 脚本中编写的 Winform 代码 例如 showContent ps1 文件 并显示一些内容 我需要在Winform启动后隐藏powershe
  • 无法使用 Windows 窗体中的内容处理 powershell 功能

    function CalendarShare Add MailboxFolderPermission Identity FromUser Text AccessRights Editor User ToUser Text 当程序运行时 它会
  • PowerShell:使用 Invoke-Expression 管理错误

    我尝试弄清楚如何确定使用 Invoke Expression 的命令抛出是否失败 即使变量 LASTEXITCODE 或 ErrorVariable 也对我没有帮助 例如 PS C gt cmd cat c xxx txt 使用 Invok
  • 将 Powershell 对象的类型名称从 PSCustomObject 更改为我选择的名称?

    我有一个使用自定义对象的脚本 我用这样的伪构造函数创建它们 function New TestResult trProps name repo vcs Skipped clean New StageResult This is anothe
  • 禁止非 PowerShell 命令的输出?

    我正在运行命令 hg st 然后检查它是 LASTEXITCODE检查当前目录中 Mercurial 的可用性 我不关心它的输出 也不想将它展示给我的用户 如何抑制所有输出 成功或错误 由于 Mercurial 不是 PowerShell
  • 全局变量用例

    我有几个脚本和模块 它们使用全局变量来完成很多事情 我的日志记录可以采用以下三种形式之一 简洁 详细和验证 没有实际操作的详细日志记录 仅验证提供的数据 我还有许多函数 它们根据运行的上下文 用户或机器 而做出不同的响应 并且正在执行的操作
  • SQL Server:删除除系统数据库之外的所有数据库

    在 PowerShell 中 我使用以下代码删除所有非系统 SQL Server 数据库 invoke sqlcmd ServerInstance sqlInstanceName U sqlUser P sqlPass Query EXEC
  • Start-Job 输出去了哪里?

    W gt job start job Write Output hi there throw an error Wait Job W gt job select State Failed HasMoreData True StatusMes
  • 用于检查 URL 状态的 PowerShell 脚本

    与此问题类似 https stackoverflow com questions 18500832 script to check the status of a url我正在尝试监视一组网站链接是否已启动并运行或没有响应 我在 Inter
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • SQL Server 2008:如何使用 powershell 获取“消息”选项卡(在 Management Studio 中)输出

    我在用invoke sqlcmd管理我的数据库 它工作得很好 我将 Management Studio 中 结果 选项卡的输出保存到日志文件中 当我做一个BACKUP DATABASE 输出是在 消息 选项卡上完成的 我想将其保存在日志文件
  • 使用 powershell 编辑 XML

    好吧 我感觉自己像个大白痴 为了工作中的管理目的 我使用 Powershell 已经有一段时间了 也就是说 编写脚本不是我的强项 现在 我正在尝试编写一个 PS 脚本 将一个部分添加到一堆机器上的 XML 中 以添加设置来解决我们在某个应用
  • 使用 powershell 版本 2 查询 AD

    我们有由 Windows 7 和 Windows 10 组成的混合桌面操作系统 我有一个登录脚本 该脚本从每次用户登录时运行的 powershell 脚本收集各种信息 Windows 7 powershell 仅是版本 2 这意味着我无法使
  • 带有多个附件的电子邮件

    我正在为服务台编写一个 PowerShell 脚本 以便在将 userhome 文件夹从服务器迁移到 NAS 设备时使用 帮助台用户将用户名输入到 userhomelist txt 文件中 我的问题是我无法获取脚本来附加所有日志文件 电子邮
  • 抑制数组列表添加方法管道输出

    我正在使用数组列表来构建日志项序列以供稍后记录 工作起来很不错 但是 Add 方法将当前索引发送到管道 我可以通过将其发送到 null 来解决这个问题 如下所示 strings Add junk gt null 但我想知道是否有某种机制可以

随机推荐

  • 如何将基于页面的 PHP 应用程序转换为 MVC?

    一段时间以来 我一直在努力解决如何使用 MVC 框架重新编码基于页面的 PHP 应用程序 仅作为背景 我必须将应用程序移至 MVC 因为我的老板正在让我这样做 不管怎样 我已经坐下来 打印出了目录结构 然后我开始尝试计划如何将这些页面转换为
  • 向 Keras 中 Flatten() 层的输出添加新功能

    我正在做图像分类 首先 我将图像输入 Keras 中的 CNN 模型 我想在 keras 中 Flatten 层的输出中添加新功能 然后将其输入到密集层 我该如何为其编写代码 基本上我对图像使用卷积 最后我想添加其他功能 例如年龄性别等 m
  • 如何使用lua打乱单词的字母

    我在 PHP 中使用了这个 str shuffle 函数 和梅卡this api https i stack imgur com papuI png我需要做同样的想法 将字母打乱 字母之间有空格 但使用 lua 对于使用电报机器人 我进行了
  • scrollIntoView 在所有浏览器中都有效吗?

    Does scrollIntoView 适用于所有浏览器 如果没有的话有没有jQuery选择 是的 但用户体验很差 正如 9bits 指出的那样 这长期以来一直是所有主流浏览器都支持 https developer mozilla org
  • 当 C 说全局变量的启动值为零时,是否也意味着结构成员?指针的初始值是多少?

    当 C 说全局 static 变量的启动值为零时 是否也意味着结构成员 全局 静态 指针的初始值是多少 无效的 是的 这是由 C99 6 7 8p10 指定的 如果一个对象具有自动 存储期限未初始化 明确地 它的值是 不定 如果一个对象有
  • 打印 char 数组的一部分

    So char someCArray something 我想从 某物 中打印出 ethin 您可以使用printf精度说明符 include
  • 在循环中替换 Pandas 数据框中的值

    我正在尝试循环遍历 pandas 数据框 并在某些列中的值满足某些条件时替换它们 我意识到一般有更直接的方法可以做到这一点 但在我的具体示例中 我需要一个循环 因为一行的结果可能取决于前一行 下面是一个可重现的错误示例 当我尝试替换文本时
  • `.map(f)` 和 `.map(|x| f(x))` 有什么区别?

    做的时候沙沙声standard library types iterators2 rs https github com rust lang rustlings blob main exercises standard library ty
  • 替换SWF中的字符串[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们已经为大型 Flash 项目的不同客户修改了数十个 SWF 版本 现在必须替换每个副本中脚本中嵌入的
  • 将 RMagick 与 Ocra 捆绑在一起

    我正在尝试使用 Ocra 创建 Ruby 脚本的可移植版本 该脚本取决于rmagick这还需要安装 ImageMagick 生成的可执行文件在我的计算机上可以运行 但在其他所有计算机上都会失败 除非最终用户手动安装 ImageMagick
  • 取消引用双指针

    我有一段代码片段 我无法理解它是如何工作的 因为有一行执行了双重取消引用 代码如下所示 void afunction int x x malloc 2 sizeof int x 12 x 1 13 int main int v 10 afu
  • 比较 MSE 损失和交叉熵损失的收敛性

    For a very simple classification problem where I have a target vector 0 0 0 0 and a prediction vector 0 0 1 0 2 1 would
  • 强制编译器遵循 C99 标准

    当我在我的项目上编码时 我发现我已经使用了一段时间的匿名结构实际上只在 C11 中可用 而不是我想要针对的标准 C99 中可用 给出以下代码 struct data int a struct int b int c int main str
  • 将 INFO 和 ERROR 日志与 java.util.logging 分开

    我正在为 Java 应用程序配置日志记录 我的目标是两个日志 一个用于所有消息 另一个仅用于高于特定级别的消息 该应用程序使用java util logging 类 我按原样使用它 所以我只能通过logging properties fil
  • 经典 ASP - SQL Server 不存在或访问被拒绝

    我正在尝试连接到本地主机上的 SQL Server Express DB 但收到以下错误消息 用于 SQL Server 的 Microsoft OLE DB 提供程序 0x80004005 DBNETLIB ConnectionOpen
  • 注入时 Jquery 对话框无法正确显示

    我正在制作一个 Chrome 扩展 并尝试在用户单击页面上的元素时注入 Jquery 当我尝试通过 Jquery 创建对话框时 var box document createElement div box id box box title
  • 如何从 vue 中的所有子复选框组件中收集选定的复选框?

    我有一个表 其中行元素全部由子组件填充 每个子组件中都有一个复选框 现在我想立即获取所有选中的复选框 我可以使用首选项发出作为两种方式绑定并更新父级上的数组或对象 但我想知道是否有更好的方法 这是模板部分的简短示例 table thead
  • 如何设置 IIS 以使应用程序保持活动状态?

    我认为我的网络应用程序会在一段时间后关闭 如果我大约 5 分钟内没有使用该应用程序 它会返回一个新会话 会话超时设置为 720 分钟 因此这不会成为问题 可能是应用程序池中的设置或类似的设置 我认为这是某种资源管理 我使用的是IIS 7 0
  • 在 bash 中使用 IFS 使用 \r\n 分割字符串

    我想在 bash 中拆分包含 r n 的字符串 但回车符和 n 会出现问题 谁能给我关于不同 IFS 的提示 我也尝试过 IFS input projects google tests inbox document 01 r nprojec
  • 通过管道将 JSON 转换为 ForEach 时的奇怪行为

    为什么以下不迭代元素System object 返回的数组ConvertFrom Json ConvertFrom Json 1 2 3 ForEach Object 但这确实 ConvertFrom Json 1 2 3 ForEach