2012-02-18 55 views
4

我输入下面的命令找出有多少唯一对象有它给了我我真的不知道为什么,这给5为什么我得到在PowerShell中排序输出-unique计数

> $var = @(2,4,2,5,3,6,34,6,3,6,4,6,3,5,5,353,5343,5,3,56,34) 
>$var | sort -Unique 
2 
3 
4 
5 
6 
34 
56 
353 
5343 
>$var | sort -Unique Count 
5 
+0

好问题!这看起来像是一个bug ... 5似乎来自参数'-Property',但我不知道为什么。 '-Property'似乎需要任何字符串......返回的数字只是来自列表中的一个项目,例如'1,4,6,12,65,3,13 | Sort-Object -Unique -Property itsABugMaybe'返回'65'。您可能想要发布此[这里](http://connect.microsoft.com/PowerShell) – 2012-02-18 01:54:15

+0

谢谢,我按照你的建议发布了它。 - https://connect.microsoft.com/PowerShell/feedback/details/725505/powershell-returning-invalid-number-for-this-command – Mitul 2012-02-18 02:03:14

+0

太好了。我投了票。 – 2012-02-18 02:30:00

回答

6

$var | sort -Unique COUNT是一样的:$var | sort -Unique -Property COUNT

那么什么样的正在做的是寻找每个元素在“COUNT”属性该数组以确定它们是否唯一。你可以看到这是如何工作,如果你做到以下几点:

GPS sv* | sort -Unique ID 
GPS sv* | sort -Unique Name 

由于没有一个对象都有一个“COUNT”属性,排序看到他们都一样,因此没有一个是独特的,它返回的一个元素。线索来自尝试以下:

$var = $("a", "b", "c", "b") 
$var | sort -Unique count 

这产生了结果“c”。

衡量是你的朋友在这里:

$var |sort -Unique |measure 

这应该做的伎俩。

+0

“它返回一个元素”,所以它随机返回列表中的一个值?它似乎也返回相同的元素,如果你不添加列表中的元素。 – ca9163d9 2012-03-03 07:17:53

3

我不知道它为什么这样做,但-sort没有计数参数。

我想你可能是以后是什么:

$var = @(2,4,2,5,3,6,34,6,3,6,4,6,3,5,5,353,5343,5,3,56,34) 
($var | sort -Unique).count 
+0

字符串“Count”正在填充“-Property”(位置1)的位置,该位置出于某种原因正在从传入对象中输出其中一个项目。 – 2012-02-18 02:01:58

+0

当然你的答案是正确的做法。我试图理解为什么要在这里幕后。感谢您的回应。 – Mitul 2012-02-18 02:02:42

相关问题