【发布时间】:2019-10-10 16:01:53
【问题描述】:
$sample = @"
name,path,type
test1, \\server1\path1\test1.txt, 1
test2, \\server1\path1\test2.txt, 1
test3, \\server1\path2\test3.txt, 2
test4, \\server1\path1\test4.txt, 2
test5, \\server1\path3\test1.txt, 3
"@
$s = $sample | ConvertFrom-Csv
$g = $s | Group-Object -Property type
# $g[0].Group.GetType() reports as Collection`1
$t = $g[0].Group | Select -ExpandProperty Path
# $t.GetType() reports as Name=Object[], BaseType=System.Array
$t
# reports:
# \\server1\path1\test1.txt
# \\server1\path1\test2.txt
$t | Select *
# reports:
# Length
# ------
# 25
# 25
我在我的一个脚本中遇到了一个问题,我可以使用之前的代码重现该问题。我有一个来自 Import-Csv 的数组,其中包含一堆 UNC 路径。我根据不同的 CSV 属性标准对这些路径进行分组,然后尝试使用生成的 .Group 属性 Collection 对象对该组执行更多工作。我的问题是,如果我尝试对该对象执行任何操作,除了将其发送到控制台之外,该对象将报告为值长度而不是值本身。
例如:$t | Converto-Html -Fragment
任何人都可以解释正在发射的长度而不是值是怎么回事,以及最终如何解决这个问题以获取值而不是涉及 Group-Object、Group Properties 的长度? TIA
【问题讨论】:
-
更简单的重现方法:
'a', 'aa', 'aaa' | select *。字符串只有一个属性:Length。 -
+1 PetSerAl -- 我把这个例子写得非常复杂,因为它更能代表我在脚本中看到的问题(如果问题与我遇到的其他问题有关)做)。
标签: .net powershell collections