当我尝试获取项目数(例如,计算(gci).count
文件夹中的文件数)时,PowerShell 不会返回空列表或仅包含一个项目的列表的输出。不过,对于包含多个项目的列表,它工作正常。
如何让 PowerShell 在所有情况下都返回正确的数值?即:如何让它为空列表输出实际零,为单项列表输出一?
gci
我的特定用例(如上面链接的相关问题中进一步描述的那样)是获取通过将命令的输出通过管道传输到而得到的列表中的项目数where
。
答案1
这与以下事实有关:当 powershell 返回一个包含 1 个项目的数组时,它会简单地将数组折叠为单个项目。
在版本 3 之前,这将导致一个没有预期属性的对象count
,并且结果将为空。此问题已在版本 3。
因此您有 2 个选择:
- 升级到 Powershell v3
应用以下解决方法,始终将结果包装为数组类型
@()
:@(gci).count