问题标签 [pscustomobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
122 浏览

arrays - PowerShell - 一个与 convertfrom-string 相关的奇怪问题

因此,我试图使用 PowerShell 作为自我强加的编程挑战来获得 21 世纪四个季节的平均长度。

我的想法是从文本文件中获取值,创建一个 [PSCustomObject] 并为其每行的 noteproperties 分配值,将年份添加到日期并将日期转换为 [datetime] 并添加到另一个数组,然后遍历第二个数组使用 index 并使用 new-timespan 获取季节长度并添加到第三个数组和 measure-object 第三个数组,如果这在英语中听起来令人困惑,请原谅我,但它在代码中确实非常简单。

现在我从这里得到春分和夏至的日期:冬至和春分:2001 到 2100

使用 Notepad++ 格式化我得到的日期:

然后我在 Windows 10 上的 PowerShell 7.1 x64 上使用了这些代码:

以此为模板:

当我运行命令时,我收到了很多错误消息,它们都是这样的:

我仔细检查后发现所有这些都来自 $mequi,它代表 March Equinox,我意识到日期肯定丢失了,然后我输入 $timetable 并确认很多 March Equinox 日期丢失,并且只有 March Equinox 日期丢失,然后我使用了这个命令:

查出有46个缺失,但其他3个类别的日期没有缺失,只是三月分,缺失日期的索引如下:11、15、19、23、27、31、35、39、 40, 43, 44, 47, 48, 51, 52, 55, 56, 59, 60, 63, 64, 67, 68, 69, 71, 72, 73, 75, 76, 77, 79, 80, 81, 83、84、85、87、88、89、91、92、93、95、96、97、98

有任何想法吗?有人能帮助我吗?

Update3:所以我使用了完整的代码:

这就是我得到的:


更新:我现在正在编辑问题,因为我想分享一个更好的方法。

通过在 Notepad++ 中查找和替换的更多努力,我能够获得以下信息:

另存为 seasons.csv

现在使用这些代码:

其余步骤相同(只需将 $timetable1 替换为 $seasons),这种方法更好,因为从 csv 导入和导出到 csv 更容易且更可靠。

0 投票
1 回答
73 浏览

powershell - psCustomObject 作为返回的数据,奇怪的管道错误

我试图满足我对返回类型性能的好奇心。基本上我想看看在返回复杂数据时哈希表、psCustomObject 和我自己的类之间是否存在有意义的差异。但是我遇到了 psCustomObject 的问题。

所以,我从

Measure-Command : The given key was not present in the dictionary.Measure-CommandpsObject 测试中排队。鉴于 Measure-Command 有一个代码块,并且有时会掩盖真正的错误,我将该代码修改为

现在我An error occurred while creating the pipeline.没有线路信息。这似乎很简单,所以我对它失败的原因感到有些困惑。特别是因为我从另一个工作正常的项目中复制了 psCustomObject 代码。这就是返回数据看起来如此的原因,我之前已经成功地将 psCustomObject 用于这个用例。

编辑:与我的工作和我正在尝试做的一个区别是在我使用函数之前。所以我修改了上面的代码,添加了一个返回psCustomObject的函数,像这样

并添加了适当的测试

这是一种享受。但是我将所有内容都移到了课堂上,因此它并没有真正直接解决主要问题。尽管如果您只是不能[psCustomObject]用作类方法的返回类型,则可能会出现这种情况。

此外,性能看起来像这样

这几乎表明哈希表是最快的,但不足以使其成为强制性的,我可以根据其他标准在哈希表和我自己的类之间做出决定。但我敢肯定,类错误中的 psObject 在幕后会发生一些有趣的事情。

0 投票
1 回答
94 浏览

powershell - Powershell Splatting 对象属性(Typeof System.Collections.Hashtable)

举个例子,让我更清楚我想做什么

这可以正常工作。

我想做的是传递存储在对象'CSObject'的属性'CommonArgs'中的splatted参数,如下所示:

0 投票
1 回答
115 浏览

powershell - 如何在管道上使用 PSCustomObject ScriptMethod

PS版本:5.1


期望的

我希望的工作

给予

但给出错误


试过了

什么不起作用,因为:idk,tl;dr 原因?

什么不起作用,因为:开始/结束

什么不起作用,因为: $this 不再附加

什么不起作用,因为:idk,也许 Stepper 的范围过早死亡


差不多好了

什么有点工作

虽然这似乎是一个功能模型,但如果有一个解决方案不需要连接对象的用户每次使用对象的方法时都必须在他们的末端编写开始/处理/结束脚本,那就更好了.

0 投票
1 回答
105 浏览

json - Powershell:将名称和值数组高性能转换为可解析格式 - 我怎样才能使它更快

当我希望从 JSON 有效负载创建一个容易/快速的可解析对象/PSCustomObject 时,如何使我的代码性能更高$JSON

我收到的 PAYLOAD 结构的一个示例是:

如您所见,它的格式非常烦人。

请注意,我尝试解析的有效负载要大得多,并且数量从 500 个这些名称/值对象到 50000 个不等,而不仅仅是上面列出的 4 个。

################################################# #########################

我的目标

把它变成一个键值对场景,以便以后更容易解析

不是这个

使用 JSON 我必须做$JSON.where({$_.name -eq "system.enablenetflow"}).value

是的

我希望最终状态是$obj我创建的新变量会让我得到值$obj."system.enablenetflow"

################################################# #########################

我目前的尝试非常慢

我做了以下事情:

  1. 创建一个空 PSCustomObject 并将其保存为变量$obj
  2. $JSON对遍历 JSON 数组的变量执行了 foreach 方法
  3. 添加成员$obj,将“名称”设置为 PropertyName,将“值”设置为 PropertyValue

这是我的代码示例:

我怎样才能让它更快?

0 投票
1 回答
88 浏览

powershell - 如何在 PSCustomObject 的 ScriptMethod 上使用默认值

我试图指定方法的第三个参数的值,同时仍然让方法中的第二个参数默认。

我能够将其拼凑起来以使其正常工作,但我希望其他人有更好的解决方案

0 投票
4 回答
625 浏览

powershell - 有条件地替换 PowerShell 对象中的值

我有一个 PSCustomObject 数组包含在一个名为$attendance.

present值必须修改为以下内容:

我可以用一个ForEach-Object循环来改变它,但这会遍历整个对象。

为了缩短代码,我尝试了以下变体,但无法将其折叠回$attendance变量中。

present是否有使用点符号来更改列值的单行或更简单的方法?

0 投票
1 回答
384 浏览

powershell - Powershell 克隆对象 ArrayList

我创建了一个带有一些属性的 PSCustom 对象并将其添加到集合中

简而言之

到目前为止还可以并且有效。直到我想从中删除一些东西。我收到一条消息说 op_substraction 不是方法。

好的,所以我搜索了一下,发现我可以像这样声明 Collection

我现在将 += 更改为 $Collection.Add($obj) 当我执行 $Collection.Remove($obj) 时,我没有收到错误,但 obj 没有被删除。

我用谷歌搜索了更多,发现 [System.Collections.ArrayList] 首先还有一个信息.. 我有以下代码来删除对象($MyItem 包含不应删除对象的信息)

所以如果我这样做,它会给出 $Collection 已更改的错误。好的,所以我克隆了对象列表。我在 SO 上找到了一些代码并对其进行了一些更改

我调用函数,在函数中一切都很好。但是 ReturnValue 现在在开头有 0,1,2,...。我不知道为什么。我想压制这一点。

我进一步在这里读到[System.Collections.ArrayList] 已被贬低。

所以我几乎迷路了。如果是这样,我什至应该使用 ArrayList 如果我不应该使用 ArrayList,我该如何摆脱数字,什么是正确的替代方案。还是我做错了什么?

请帮我。

谢谢问候

0 投票
1 回答
24 浏览

json - 如何在 pscustomobject 中初始化 pscustomobjects 数组

我尝试制作这样的对象:

我得到以下输出:

我怎样才能实现这样的有效 JSON 结构?

0 投票
1 回答
109 浏览

arrays - 在 PowerShell 中,为什么我的 if 语句返回整个数组而不是单个对象?

我有一个脚本,假设要查找主机名所在的范围。

我的 PSCustomObjectLocation = $scope.name正在获取整个范围数组而不是匹配项,如下所示。

我导入一个名为 .txt 的主机名文件$list。然后循环$list$scopes寻找匹配项。