The GetValue method was the missing piece. That and I was using Rename-ItemProperty to make a backup and it was expanding the environment variables in the path.
Here's the finished product. I wish I could make those first three lines more elegant, but when I tried to substitute HKEY_LOCAL_MACHINE for HKLM on line 6, I had problems:
$PathPath = "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
$PathPath2 = "HKEY_LOCAL_MACHINE\$PathPath"
$PathPath = "HKLM:\$PathPath"
If (Test-Path $PathPath)
{
If ((Get-Item -Path Registry::$PathPath2).GetValueKind("Path") -ne "ExpandString")
{
$item = get-item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
$PathData = $item.GetValue('Path','',1)
New-ItemProperty -Path $PathPath -Name 'PathBackup' -PropertyType "ExpandString" -Value $PathData
Remove-ItemProperty -Path $PathPath -Name 'Path' -ErrorAction Stop
New-ItemProperty -Path $PathPath -Name "Path" -PropertyType "ExpandString" -Value $PathData
}
}