PowerShell是否在后台构建哈希表以进行输出?

时间:2018-10-25 17:59:00

标签: powershell

我正在尝试了解Powershell中对象和哈希表的工作方式。我知道这两者之间的区别,但是我有点困惑。如果我运行Get-Service,以获得包含名称,显示名称等的输出,是否表示这是Powershell在后台构建的Hashtable?我知道哈希表是key = value,但是当我从get-service获取输出时,它超过了2列。我对在Powershell中看到的内容感到有些困惑:)

1 个答案:

答案 0 :(得分:1)

我喜欢这样解释:

  
      
  1. 在PowerShell中,一切都是对象。
  2.   
  • 哈希表是对象。
  • 字符串是对象。
  • 整数是对象。
  • 数组是对象。
  • 对象数组就是对象
  
      
  1. 在PowerShell中,Functions和Cmdlts与对象交互并返回对象。
  2.   

函数和Cmdlet(如ionic cordova plugin add cordova-fabric-plugin --variable FABRIC_API_KEY=ec...5 --variable FABRIC_API_SECRET=9a...173e)返回一个对象。对于前。运行:

Get-Service

在这里,您看到$Services = Get-Service $Services.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array 是类型$Services(对象数组)。由于Cmdlet Object[]输出一个对象,因此我们可以通过管道将其传递给另一个函数。即

Get-Service

这会将对象输出到CSV文件。您可以进行进一步的管道传输,例如添加$Services = Get-Service $Services | Export-Csv -Path 'C:\services.csv' 进行过滤等。所有这些都将我们引向问题的症结所在:

  
      
  1. 您如何可视化对象?
  2.   

运行Where-Object时,它将输出一个对象,并将其交给PowerShell的控制台。您将看到PowerShell控制台对类型Get-Service的对象的外观的解释。同样,即使在后端,哈希表和2列数组也可以被解释并显示相同,即使它们是对象的类型不同。