2012-02-18 79 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

相關問題