簡體   English   中英

Powershell cmdlet輸出中的嵌套對象和集合未顯示

[英]Nested objects and collection in output of Powershell cmdlet not showing up

我正在使用C#開發Powershell二進制模塊。 我發現嵌套的對象和集合未顯示在控制台上。 所有其他屬性顯示正確。 我還沒有從PSObjects派生輸出類。 它們是純C#。 它包含一堆屬性,集合(列表和字典)和一個嵌套對象。 嵌套對象僅顯示類名稱。 列表僅顯示第一個屬性。

我嘗試使用數組([])而不是列表,並將字典轉換為名稱,值屬性類的集合,並將其顯示為數組。

我想擴展內部對象和列表中的對象。

PowerShell會在嵌套對象上調用ToString()來顯示它們。 您可以使用派生屬性(在Types.ps1xml文件中定義)或自定義格式(在Format.ps1xml文件中定義)來公開嵌套對象的某些屬性,以默認在控制台中顯示,但否則PowerShell只會顯示一個對象的扁平化版本,無論是類名(如果未重寫ToString() )還是您自己定義的任何版本。

例如,我在一個使用Format.ps1xmlTypes.ps1xml文件來控制如何顯示類型的模塊上工作。 Types.ps1xml我們選擇默認的顯示屬性,還添加一個自定義屬性來重命名嵌套對象(針對匿名性進行了修改):

<?xml version="1.0" encoding="utf-8" ?>
<Types>
  <Type>
    <Name>ObjectA</Name>
    <Members>
      <MemberSet>
        <Name>PSStandardMembers</Name>
        <Members>
          <PropertySet>
            <Name>DefaultDisplayPropertySet</Name>
            <ReferencedProperties>
              <Name>ID</Name>
              <Name>Name</Name>
              <Name>Description</Name>
              <Name>Metadata</Name>
            </ReferencedProperties>
          </PropertySet>
        </Members>
      </MemberSet>
      <ScriptProperty>
        <Name>ObjectSecrets</Name>
        <GetScriptBlock>$this.Secrets.ToString()</GetScriptBlock>
      </ScriptProperty>
    </Members>
  </Type>

  <Type>
    <Name>ObjectB</Name>
    <Members>
      <MemberSet>
        <Name>PSStandardMembers</Name>
        <Members>
          <PropertySet>
            <Name>DefaultDisplayPropertySet</Name>
            <ReferencedProperties>
              <Name>Name</Name>
              <Name>ObjectA</Name>
              <Name>Directory</Name>
            </ReferencedProperties>
          </PropertySet>
        </Members>
      </MemberSet>
    </Members>
  </Type>
</Types>

請注意, ObjectB引用了嵌套對象ObjectA ObjectA覆蓋ToString()以返回其自己的Name屬性:

> Get-Objects

Name           Directory                ObjectA
----           ---------                -------
some-cool-name X:\some\random\directory objecta-name

有關Format.ps1xml的更多信息: https ://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_format.ps1xml

有關Types.ps1xml的更多信息: https ://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_about_types.ps1xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM