WikiProduct.types.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Types>
    <Type>
        <Name>WikiProduct</Name>
        <Members>
            <PropertySet>
                <Name>DefaultDisplayPropertySet</Name>
                <ReferencedProperties>
                    <Name>Page</Name>
                    <Name>Properties</Name>
                    <Name>Labels</Name>
                </ReferencedProperties>
            </PropertySet>
 
            <ScriptProperty>
                <Name>AllProperties</Name>
                <GetScriptBlock>($this.Properties | Select-Object -ExpandProperty Properties)</GetScriptBlock>
            </ScriptProperty>
 
            <ScriptProperty>
                <Name>PmoProperties</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'pmo' } | Select-Object -ExpandProperty Properties)</GetScriptBlock>
            </ScriptProperty>
 
            <ScriptProperty>
                <Name>ProductProperties</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'info' } | Select-Object -ExpandProperty Properties)</GetScriptBlock>
            </ScriptProperty>
 
            <ScriptProperty>
                <Name>ProductName</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'info' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.Name } )</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>ProductAlias</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'info' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.Title } )</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>ProductDomain</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'info' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.Domain } )</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>ProductStatus</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'info' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.Status } )</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>ProductDescription</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'info' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.Description } )</GetScriptBlock>
            </ScriptProperty>
 
            <ScriptProperty>
                <Name>PmoOwner</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'pmo' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.PM } )</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PmoServiceProvider</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'pmo' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.'Service Provider' } )</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PmoCommittee</Name>
                <GetScriptBlock>($this.Properties | Where-Object { $_.Id -eq 'pmo' } | Select-Object -ExpandProperty Properties | Foreach-Object { $_.Committee } )</GetScriptBlock>
            </ScriptProperty>
 
            <ScriptProperty>
                <Name>ArtifactType</Name>
                <GetScriptBlock>($this.GetType().Name)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageID</Name>
                <GetScriptBlock>($this.Page.ID)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageTitle</Name>
                <GetScriptBlock>($this.Page.Title)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageBody</Name>
                <GetScriptBlock>($this.Page.Body)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageSpaceKey</Name>
                <GetScriptBlock>($this.Page.Space.Key)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageSpace</Name>
                <GetScriptBlock>($this.Page.Space.Name)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageVersion</Name>
                <GetScriptBlock>($this.Page.Version.Number)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageLastUpdated</Name>
                <GetScriptBlock>($this.Page.Version.When)</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageUri</Name>
                <GetScriptBlock>([uri]::new($this.Page.URL))</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageEditUri</Name>
                <GetScriptBlock>([uri]::new($this.Page.URL -replace '/(\d+)$','/edit-v2/$1'))</GetScriptBlock>
            </ScriptProperty>
            <ScriptProperty>
                <Name>PageAncestors</Name>
                <GetScriptBlock>($this.Page.Ancestors)</GetScriptBlock>
            </ScriptProperty>
        </Members>
    </Type>
</Types>