【问题标题】:Count of Dictionary vs Count Key [duplicate]字典计数与计数键[重复]
【发布时间】:2017-02-23 03:54:04
【问题描述】:

我想计算每个 Powershell cmdlet 所需的参数数量,发现有些奇怪:

$a = Get-Command Test-Connection
$a.Parameters.Count

我希望得到13 的结果,但我得到了一个对象,因为参数字典/哈希表实际上包含一个'Count' 键($a.Parameters.'Count')。

如何区分调用字典的Count 属性(getter 方法)和访问$a.'Count' 元素?

【问题讨论】:

  • 我用(Get-Command Test-Connection).Parameters.Keys.Count得到20个
  • @AustinFrench Weird,我得到 25 个相同的命令。也许是版本差异? PSVersion 5.1.14393.103 on Win10 Enterprise
  • 是的,我正在使用这个特定的 Win7 安装。
  • 奇怪,今天我也得到了一个 int 而不是一个对象,尽管我确实在某个时候升级到了 PS v.3。

标签: powershell dictionary


【解决方案1】:

我会查看对象的类型。有点笨拙,但它会像这样工作:

$B = (Get-Command Test-Connection).Parameters
if ($B.GetType().Name -eq "Dictionary``2") { $B.Keys.Count}
else {$B.Count}

老实说,我不认为你应该这样做,但它确实可以解决问题。

【讨论】:

  • 如果某个命令也有Keys参数怎么办?
  • 您的意思是 cmdlet 参数字典是否也有一个名为 Count 的键? ermagawd ...我想是递归检查? @PetSerAl
  • 不确定你所说的递归检查是什么意思,但假设你有这样的功能:function f{param($Count, $Keys, $Unknow, $Number, $Of, $Parameters)}。你是怎么得到它的参数数量的?
  • 我认为这是学术性的。 (我也有大约 63.9% 的人确定我们在谈论同一件事)我在另一个屏幕上尝试了你的答案,它给出了相同的答案。我也认为这个答案是一个更好的方法。我会投票关闭这个作为骗子,但我不能
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2017-11-13
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 2016-02-04
  • 2018-02-23
  • 2018-09-22
相关资源
最近更新 更多