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 order to make sure $item.Fields
returns 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!!!