问题标签 [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.
arrays - 数组/自定义对象
TL; DR:我正在尝试根据条件构建带有标头的数组,理想情况下看起来像这样。
我一直在尝试不同的方式,但这是我最近的两次尝试:
这会输出每一行的最后一行(就像语句中$array += $list
的那样)。if..else
但是,当它在它之外时,if..else
它会出现一个空值。附加$list
到$array
似乎对我不起作用(我做错了什么)。
下一次尝试使用字符串来存储值,但我没有设法在字符串上放置标题,因此格式不存在。好处是我至少看到了我期望的值,所以我知道条件有效。
知道我要去哪里错了吗?
powershell - ExpandProperty - 管道中缺少对象
我在管道中有一些对象,如下所示:
结果:
我需要展开道具并在对象名称旁边列出每个展开的属性。没有更简单的:
结果:
到目前为止,一切都很好。当管道中的某些对象没有道具时,问题就开始了:
结果:
现在我希望,该命令:
会返回这样的结果(obj2 没有额外的道具,但它仍在管道中,它的“默认”属性 objname):
相反,缺少 obj2:
如果没有可扩展的内容,为什么 ExpandProperty 不会留下我的对象?
powershell - Scoping Custom Objects in Powershell
So I have a powershell issue that seems like it should be simple to resolve, but I am having trouble figuring it out myself.
Take for instance the following program:
This works fine, and has the following output:
...but if I try to place this into a function and scope $MyFavoriteAnimals as a global the New-Object command stops working:
...and I get the following error:
powershell - PowerShell 类型加速器:PSObject 与 PSCustomObject
在 PowerShell v3.0PSCustomObject
中引入。有点像PSObject
,但更好。在其他改进中(例如,保留属性顺序),从哈希表创建对象被简化:
现在看来,这句话很明显:
将以相同的方式工作,因为PSCustomObject
它是完整命名空间 + 类名的“别名”。相反,我得到一个错误:
无法将“System.Collections.Hashtable”类型的“System.Collections.Hashtable”值转换为“System.Management.Automation.PSCustomObject”类型。
我列出了这两种对象的加速器:
并发现它们都引用了同一个PSObject
类——这意味着使用加速器可以做很多其他的事情,而不仅仅是让代码更短。
我关于这个问题的问题是:
- 您是否有一些有趣的例子来说明使用加速器与使用完整类型名称之间的差异?
- 当加速器作为一般最佳实践可用时,是否应该避免使用完整的类型名称?
- 如果加速器不仅仅指向底层类,如何检查,也许使用反射?
json - 访问从 JSON 生成的 PS 自定义对象属性中的值
对于这样的 JSON:
当转换为 PS 自定义对象并保存在 $data 变量中时,我可以访问 'Tournaments' 下的特定'Tours' 的值,如下所示:
但是,是否可以通过在“Tours”下指定“Code”或“Name”值来访问“Tournaments”属性和值?类似的东西,也许:
实际上,在 PS 脚本中,我想通过“Tours”下的“代码”过滤数据并获取基础“锦标赛”(获取“锦标赛”以获得“旅游”的特定“代码”)。
powershell - 无法修改 PS 自定义对象中嵌套属性的值
我有一个 PS 自定义对象:
我可以轻松地修改 TourCode 或 TournamentName 等顶级属性的值:
但是在尝试修改 SValues 属性中的属性 S1、S2、S4 或 S4 时,我遇到了奇怪的错误消息:
为什么它说它找不到该属性?我可以通过这样引用它来轻松获得它的价值:
我究竟做错了什么?
UPD:gm -i $testTournament.SValues的输出在屏幕截图上:http: //i.imgur.com/BeRr2aJ.png JSON 片段在屏幕截图上: http: //i.imgur.com/BBK2nsi.png(类似数据) 使用以下代码读取和转换 JSON 文件:
然后创建 $testTournament:
powershell - Powershell pscustomobject 格式-表格新行而不是一行
我有一个非常大的 JSON 响应给我试图进入表格格式、导出到 CSV 并最终插入 SQL Server 的员工。我能够确定如何从 json 文件中获取所有变量,但是现在我将所有值插入到每一列的一行中,而不是每个员工的新行中。此外,当我导出到 CSV 时,值变成了 System.Object []。
这些列是一个小样本,实际上可能有 100 列。但是,我的回复是这样的:
我希望它返回:
此外,在导出到 CSV 时,响应具有正确的列,但所有列都返回:System.Object[]。此外,我的具有整数和日期的字段没有返回数据。我该如何解决这个问题?
我尝试过使用 sort-object、group-object、for-each 循环。没有任何效果。
arrays - 在 powershell 中使用 ref 从函数返回值
我有创建一个对象并将其保存在$AllMailboxes
变量中的 DoWork 函数。然后在该函数中,我执行另一个函数 ProcessEmail,该函数应该通过 ref$Mailbox
取出$AllMailboxes
和变量,向其中添加几个字段并更新$AllMailboxes
或创建新$collection
的,然后保存所有带有更新字段的 $Mailbox
我已经尝试了多个使用 ref 的方法,没有 ref,创建单独的变量,但由于某种原因,我不能让它在 $collection 中显示任何内容或以其他方式显示ProcessEmail
功能之外的任何内容。我确定我错过了一些东西。
json - Where-Object 找不到自定义对象的单个实例,但会找到它的多个实例。可能的错误?
我正在编写一个脚本,该脚本进行 API 调用并返回 JSON 结果,并在 Powershell 中作为自定义对象数组进行处理。自定义对象的属性之一是状态,因此对于每个唯一状态,我想获取具有该状态的对象的计数。当我的某些状态的代码返回计数为 0 时,我感到很惊讶,因为如果它一开始就不存在,我的脚本就不会搜索该状态。
然后我注意到当有多个具有该状态的对象时代码有效,但是当只有一个具有该状态的对象时,我的代码无法使用 Where-Object 找到它。如果我遍历自定义对象数组并执行 if() 语句,它会找到所有状态,包括只有一个对象的状态。
我在这里遗漏了什么还是这是一个错误?我的笔记本电脑运行的是 PS 5.1,我还在运行 PS 4.0 的 W2K12 服务器上进行了尝试,我得到了同样的结果。
我还能够在下面的代码中模拟这一点(删除 API 和 JSON 部分):
在上面的示例代码中,状态 Status2 仅出现在自定义对象之一中,并且 Where-Object 由于某种原因找不到它,但使用 foreach 可以。
当我运行上面的代码时,我得到:
PowerShell 版本:
主要次要版本修订
5 1 14393 0
在数组上使用 Where-Object
状态1
8
状态2
状态3
7
遍历数组
状态1
8
状态2
1
状态3
7
arrays - Powershell选择忽略列
我是 Powershell 的新手,我正在尝试让重复输出兼容以便能够使用 ConvertTo-Html。我在 PSCustomObject 中有一个字符串以及一些数组。我正在尝试使用以下内容进行去特征化,但是标题属性没有像我期望的那样重复
编辑- 下面的输出
在我错过了最后一个选择行时进行了编辑(这里我希望标题随着数组的扩展在每一行上重复)
这将返回以下输出
你好
再见
如果我使用
我得到以下
标题注释颜色
----- -------- ------
[String]Hello World {hello, bye} {blue, green, red}
我已经尝试过使用字符串转换和不使用。任何想法将不胜感激。