2

I am trying to get all the fields on the available item. seems like the following line is not fetching all the fields. Am i missing something ?

$fields = $item.Fields

3 Answers 3

1

You can use Get-ItemField function to get all item fields and loop through them as below to read them.

$item = Get-Item -Path "master:" -ID "{{Item_ID}}"
$fields = $item | Get-ItemField -ReturnType Field
foreach($field in $fields){
  Write-Host "Field Name: $($field.Name)"
  Write-Host "Field Value: $($item.Fields[$field.Name].Value)" 
}

This will return all the fields on the item which are not standard fields. In case you would like to fetch standard fields as well you can add -IncludeStandardFields flag to Get-ItemField function.

Note: In case you need to use $item.Fieldsto return all the fields, you will need to call $item.Fields.ReadAll() function before reading item fields as below.

$item.Fields.ReadAll()
# exclude standard fields.
$fields = $item.Fields | Where-Object { $_.Name -notlike '__**' }

We need to call ReadAll() function as above since Fields are lazy loaded, hence the call to this function is required to read all the fields.

Hope this helps!!!

3

To get all the fields of an item use this.

PS master:\> Get-ItemField -Path master:\content\home

To get all the fields of an item using standard fields use this.

PS master:\> Get-Item master:\content\home | Get-ItemField -IncludeStandardFields

Ref: https://doc.sitecorepowershell.com/appendix/common/get-itemfield#example-1

Hope this helps.

2

To get Sitecore item fields from item using powershell

  $itemPath = "master:/sitecore/content/Home"
    $language = "en"
    $database = "master"
    
    # Get the item from the specified path, language, and database
    $item = Get-Item -Path $itemPath -Language $language -Database $database
    
    if ($null -eq $item) {
        Write-Host "Item not found at path: $itemPath"
    } else {
        Write-Host "Fields for item: $($item.Paths.FullPath)"  
        # loop over each field in the item
        foreach ($field in $item.Fields) {
           # To Skip standard fields use the below if condition
           # if ($field.Name.StartsWith("__")) { continue }
    
            Write-Host "Field Name: $($field.Name)"
            Write-Host "Field Value: $($field.Value)"
            Write-Host "-------------------------------------"
        }
    }

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.