Answers:
这将使您计数:
get-alias | measure
您可以将结果与对象一起使用:
$m = get-alias | measure
$m.Count
如果您还希望在某些变量中使用别名,则可以使用Tee-Object:
$m = get-alias | tee -Variable aliases | measure
$m.Count
$aliases
有关Measure-Object cmdlet的更多信息,请访问Technet。
请勿将其与用于时间测量的Measure-Command cmdlet混淆。(再次在Technet上)
get-alias | measure | % { $_.Count }
measure
的缩写Measure-Object
;并返回了很多其他的东西-像Average
,Sum
,Maximum
,等...
Get-Alias | Measure-Object | Select-Object -ExpandProperty Count
用来摆脱%
and {}
。更容易写和读的是另一个讨论。
只要@jumbo的答案是:-),您就可以做得更简洁。这只是返回Count
前一个子表达式返回的数组的属性:
@(Get-Alias).Count
需要注意的几点:
您可以将任意复杂的表达式代替Get-Alias
,例如:
@(Get-Process | ? { $_.ProcessName -eq "svchost" }).Count
初始符号(@)对于可靠的解决方案是必需的。只要答案是两个或两个以上,无论有没有@,您都会得到一个等效的答案,但是当答案为零或一个时,除非有@符号,否则您将不会得到任何输出!(它Count
通过强制输出为数组来强制属性存在。)
2012.01.30更新
以上适用于PowerShell V2。PowerShell V3的新功能之一是,Count
即使对于单身人士,您也确实拥有一个属性,因此,在这种情况下,符号并不重要。
Set-StrictMode -Version Latest
。我今天(在5.1上)刚遇到这个问题-某些交互作用无法在函数中起作用。我将其追踪到其中具有Set-StrictMode的函数;当我交互式设置严格模式时,它也不起作用。
Set-StrictMode
,所以我应该注意到这一点。
if ($myObject.PSobject.Properties.Name -contains "count")
(来自stackoverflow.com/questions/26997511/…)。我讨厌PoSH让我这么做,但严格模式值得这么做。
只需使用括号和“计数”即可。这适用于Powershell v3
(get-alias).count
@($output).Count
并不总是能产生正确的结果。我用的($output | Measure).Count
方法。
我是通过VMware Get-VmQuestion cmdlet找到的:
$output = Get-VmQuestion -VM vm1
@($output).Count
它给出的答案是一个,而
$output
没有输出(正确的答案是使用该Measure
方法产生的0 )。
对于0和1,似乎只有这种情况。在有限的测试中,大于1的任何内容都是正确的。
$Counter = $(get-alias | measure).Count
正如您所说的那样,如果只有一次出现,我总是将其返回值1。