2013-10-17 57 views
2

這是一個簡單的問題,比任何事情都更理論化。customobject和psobject的區別?

Powershell中自定義對象和PSObject之間的真正區別是什麼? 爲什麼和何時創建它們?

謝謝!

回答

4

PSCustomObject與PowerShell 3.0一起抵達。我將它定義爲PSObject的「精煉版」,因爲它解決了PSObject包括顯示順序(PSCustomObject保留您指定的順序)帶來的一些煩惱,以及一些性能增強。

這是一個link關於此的更多討論。

+0

在V3中引入了一些語法快捷鍵,但PSCustomObject在V2中。如果你嘗試:(new-object PSObject).GetType()。FullName,你會在V2和V3中看到同樣的東西 - 它是PSCustomObject。 –

+0

謝謝@JasonShirk指出。當我說它到達v3時,我認爲問題是關於[PSCustomObject]'加速器'與[PSObject]的v2版本有關。 –

1

PSObject被用作PowerShell中所有對象的包裝器對象。這包括自定義對象。如果你創建一個PSCustomObject,你真的只是在封面下創建一個PSObject。

+1

將一個散列表轉換爲PSCustomObject時也有區別 - 它創建一個自定義對象,其中每個鍵/值對都成爲屬性/值對。將散列表投射到PSObject是無操作的。 –