我正在尝试了解Powershell中对象和哈希表的工作方式。我知道这两者之间的区别,但是我有点困惑。如果我运行Get-Service,以获得包含名称,显示名称等的输出,是否表示这是Powershell在后台构建的Hashtable?我知道哈希表是key = value,但是当我从get-service获取输出时,它超过了2列。我对在Powershell中看到的内容感到有些困惑:)
答案 0 :(得分:1)
我喜欢这样解释:
- 在PowerShell中,一切都是对象。
- 在PowerShell中,Functions和Cmdlts与对象交互并返回对象。
函数和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'
进行过滤等。所有这些都将我们引向问题的症结所在:
- 您如何可视化对象?
运行Where-Object
时,它将输出一个对象,并将其交给PowerShell的控制台。您将看到PowerShell控制台对类型Get-Service
的对象的外观的解释。同样,即使在后端,哈希表和2列数组也可以被解释并显示相同,即使它们是对象的类型不同。