Your command failing suggests that the current culture ([cultureinfo]::CurrentCulture) at the time of execution is something other than en-US (US-English), in which case Get-Date won't recognize a date/time string such as "7/21/2018 7:07 AM[1].
The solution is to use a [datetime] cast directly, without involving Get-Date, because a [datetime]cast always uses the invariant culture, which is like the en-US culture with respect to date/time formats:
$DR.Item($property.Name) = ([datetime] ($property.value -replace ' UTC$')) -f "MM/d/yyyy HH:mm:ss"
Caveat: Your call to .ToLocalTime() is not needed for output formatting, as the [datetime] instance you receive will behave as if it were in local time by default, even though it technically is time-zone-agnostic, as reflected in its .Kind property containing Unspecified. That is, your output will reflect the UTC date and time, without indicating so.
If you truly want to translate the input UTC timestamp into the equivalent local time, more work is needed:
$dtUtc = [datetime]::SpecifyKind(($property.value -replace ' UTC$'), 'Utc')
$DR.Item($property.Name) = $dtUtc.ToLocalTime() -f "MM/d/yyyy HH:mm:ss"
[1] PowerShell generally uses the invariant culture when it comes to from-string and to-string type conversions, but, curiously, doesn't do so when passing strings as arguments to compiled cmdlets, as opposed to [advanced] functions (written in PowerShell).
This is a known problem, but it may not get fixed for reasons of backward compatibility.
$property.valuein$(...)not only makes no difference here, it adds unnecessary overhead.