Если вы хотите проверить встроенные поля Sitecore, вам сначала нужно вызвать $sourceTemplate.Fields.ReadAll();
.
Вам следует сравнить значение поля со строкой $date
, а не с самим полем.
Затем просто получите строку, которая хранится в поле __Created
вместо получения даты, и затем отформатируйте ее обратно в строку даты ISO.
И последнее - не вызывайте Editing.BeginEdit()
иEditing.EndEdit()
несколько раз для одного и того же элемента - Sitecore выполняет несколько жестких операций при его вызове, поэтому убедитесь, что вы вызываете его только один раз для каждого элемента, который в этом нуждается.
$sourceTemplate = Get-Item "/sitecore/content/home/test"
$sourceTemplate.Fields.ReadAll();
$editing = $false
foreach($field in $sourceTemplate.Fields) {
if ($field.Value -eq '$date') {
if (!$editing) {
$editing = $true
$sourceTemplate.Editing.BeginEdit();
}
$field.Value = $sourceTemplate.Fields["__Created"].Value
}
}
if ($editing) {
$edited = $sourceTemplate.Editing.EndEdit();
}