2016-06-21 6 views
3

Eine Vorlage mit dem Namen "Benutzer" hat ein Feld namens "Location", das die ID eines anderen Elements angibt. In Powershell verwende ich Show-ListView, um eine Liste von Feldern zurückzugeben, aber Location zeigt die rohe ID, während ich lieber den Namen des betroffenen Ortes anzeigen würde.Sitecore Powershell Reports/ListView: Abrufen von Elementen aus der von der Abfrage zurückgegebenen ID

Ich habe versucht, diese Informationen abzurufen, aber ich weiß nicht, welche Syntax in der Powershell-Abfrage verfügbar ist. Mein Versuch ist wie folgt:

Get-Item master: -Query "/sitecore/content/sites/data/people//*[@@templatename='Person']" | 
    Show-ListView -property "First Name", 
    @{Label="Surname"; Expression={$_."Surname"}}, 
    @{Label="Location"; Expression={[Sitecore.Context.Database.GetItem]::FromId($_."Location").Title}} 

... was nichts ergibt.

$_."Location" 

ist die ID eines Artikels; Gibt es eine Möglichkeit, seine Felder abzurufen?

Antwort

3

Das Geheimnis liegt in der Tatsache, dass Sitecore standardmäßig nicht die bequemen Eigenschaften hat, die aus Feldern transformiert werden. In diesem Fall handelt es sich um die Title Eigenschaft Ihres Standortelements. Was Sie tun können ist:

1) Holt den Standort Artikel durch den Anbieter wie so:

Get-Item master: -Query "/sitecore/content/sites/data/people//*[@@templatename='Person']" | 
    Show-ListView -property "First Name", 
    @{Label="Surname"; Expression={$_."Surname"}}, 
    @{Label="Location"; Expression={(Get-Item master:\ -ID $_."Location").Title}} 

Ankündigung, den Anruf zu Get-Item in der letzten Zeile.

2) wenn Sie es durch die Sitecore API aus irgendeinem Grund zu holen, kann man eine Pipe an Initialize-Item und wir werden diese Eigenschaften um das Item-Objekt wickeln für Sie so mögen:

Get-Item master: -Query "/sitecore/content/sites/data/people//*[@@templatename='Person']" | 
    Show-ListView -property "First Name", 
    @{Label="Surname"; Expression={$_."Surname"}}, 
    @{Label="Location"; Expression={([Sitecore.Configuration.Factory]::GetDatabase("master").GetItem($_."Location") | Initialize-Item).Title}} 
+0

Danke sehr, das ist aufschlussreich. –

Verwandte Themen