이 오류는 Get-ItemProperty
실패 의 결과로 나타납니다 . 로그에서 실패한 스크립트 부분은 다음과 같습니다.
Write-Output "Searching if new version exists..."
$checkreg64 = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like '*Java 8*' -and ([Version]$_.DisplayVersion) -eq $version} -ErrorAction SilentlyContinue
$checkreg32 = Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like '*Java 8*' -and ([Version]$_.DisplayVersion) -eq $version} -ErrorAction SilentlyContinue
이 실패는 Get-ItemProperty
X 유형의 레지스트리 키를 읽고 데이터가 키 유형의 제한 조건과 일치하지 않는 키를 읽을 때 발생합니다 . 연구 1 연구 2 연구 3
이 경우 해결 방법 은 레지스트리에서 잘못된 키 ( $checkreg64
및 조회 된 레지스트리 경로)를 찾아서 $checkreg32
값 1을 가진 DWORD로 수동으로 다시 작성하는 것입니다.
최신 정보:
주석에서 쿼리 할 때 "지정된 캐스트가 유효하지 않습니다"라는 메시지가 표시됩니다 Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
. 이 위치에 잘못된 하위 키가 포함 된 관련 키가있을 수 있으며이 위치에 대한 쿼리가 실패 할 수 있습니다. 제거 위치에서 각 키를 개별적으로 구문 분석하여 쿼리에 문제가있는 키를 판별 할 수 있어야합니다.
아래를 실행하십시오.
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | % { write-host "Key Name:" $_.PSChildName }
그러면 일부 결과가 반환되고 Specified cast
오류 가 반환됩니다 . 잘못된 하위 키가있는 키에서 오류가 발생합니다.
예를 들어 위의 결과가 다음과 같은 경우
Key Name: fake_key_name_1
Key Name: fake_key_name_2
Key Name: fake_key_name_3
Get-ItemProperty : Specified cast is not valid.
그런 다음 성공적으로 쿼리 할 수있는 마지막 키는 fake_key_name_3
입니다. 우리가 쿼리 할 수없는 키는 목록의 다음 키였습니다. regedit를 열고 다음 키 이름 (아마도 fake_key_name_4
)을 찾아보십시오. 여기가 실패입니다. 여기에 잘못된 하위 키가 있어야합니다. 이를 수정 한 후 명령을 다시 실행하십시오. 오류가 없으면 모든 준비가 된 것입니다. 오류가있는 키가 더 있으면 잘못된 하위 키를 찾아 수정하십시오.
내가 처음 제공 한 링크 된 예제 중 하나의 경우 사용자는 data = "(잘못된 DWORD (32 비트) 값)"인 REG_DWORD 키를 찾을 것으로 예상합니다. 이것이 바로 해결의 열쇠입니다.
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
레지스트리 편집기에서 탐색 했지만 계속 진행하는 방법을 모르겠습니다.