首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PowerShell中计数对象?

如何在PowerShell中计数对象?
EN

Stack Overflow用户
提问于 2018-04-23 05:08:32
回答 2查看 0关注 0票数 0

正如我在PowerShell用户指南中阅读的,PowerShell的核心概念之一是命令接受并返回对象而不是文本。例如,运行会get-alias返回一些System.Management.Automation.AliasInfo对象:

代码语言:javascript
运行
复制
PS Z:\> get-alias

CommandType名称定义
-----------     ----                                             ----------
别名%ForEach对象
别名?位置对象
别名ac Add-Content
别名asnp Add-PSSnapIn
别名猫Get-Content
别名cd Set-Location
别名chdir Set-Location
...

现在,我如何获得这些对象的数量?

EN

回答 2

Stack Overflow用户

发布于 2018-04-23 13:55:05

这会让你数一数:

代码语言:javascript
运行
复制
get-alias | measure

你可以像使用对象一样处理结果:

代码语言:javascript
运行
复制
$m = get-alias | measure
$m.Count

如果你想在别的变量中有别名,你可以使用Tee-Object:

代码语言:javascript
运行
复制
$m = get-alias | tee -Variable aliases | measure
$m.Count
$aliases
票数 0
EN

Stack Overflow用户

发布于 2018-04-23 14:38:46

只要@ jumbo的答案是:-)你可以做得更简洁。这只是返回Count先行子表达式返回的数组的属性:

代码语言:javascript
运行
复制
@(Get-Alias).Count

有几点需要注意:

  1. 你可以用一个任意复杂的表达来代替Get-Alias,例如: @(Get-Process | ? { $_.ProcessName -eq "svchost" }).Count
  2. 最初的符号(@)对于一个可靠的解决方案是必需的。只要答案是两个或更多,你会得到一个等效答案,不论是否有@,但是当答案为零或一个答案时,除非你有@符号,否则你将不会得到任何输出!

2012.01.30更新

以上是PowerShell V2的情况。PowerShell V3的一个新特性是,Count即使对于单例,你也有一个属性,所以在这种情况下,符号变得不重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档