스크립트를 직접 실행하면 한 가지 결과가 출력되고 설치 프로그램에서 실행하면 다른 결과가 출력됩니다.

스크립트를 직접 실행하면 한 가지 결과가 출력되고 설치 프로그램에서 실행하면 다른 결과가 출력됩니다.

이것이 일반적인 문제가 아니길 바랍니다. 현재 직장에서 이상한 동작을 하는 작업이 있습니다. 우리는 신청서를 가지고 있습니다 (설치자) 일부 실행박쥐파일. 여기에는 이상한 것이 없습니다. 이제 머신에 존재하지 않는 경우를 대비해 SQL Server Native를 설치하고 싶습니다.

그래서 우리는 소프트웨어가 설치된 위치를 확인하는 스크립트를 만들었습니다.

param ([Parameter(Mandatory)]$softwareName, $minimumVersion) 

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize
[array]$matchingInstalledSoftware = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -Like $softwareName -and $_.VersionMajor -ge $minimumVersion}

return $matchingInstalledSoftware.Count

bat 파일에서 이렇게 호출하고 있습니다.

powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File  checkInstalledSoftware.ps1 -softwareName "Microsoft SQL Server 2012 Native Client*"'

그래서 문제가 발생합니다.

Microsoft SQL Server 2012 Native Client가 설치된 VM에서 이것을 직접 실행하면 "1"(true)이 출력됩니다.

내가 실행 중인 동일한 박쥐가 설치 프로그램에서 실행되었지만(동일한 박쥐 파일 호출) 이제 "0"(거짓)이 출력됩니다.

이로 인해 스크립트 호출자에 관한 문제가 발생했다고 생각하는데, 그게 무엇인지 전혀 모르겠습니다. 어떤 아이디어가 있나요?

관련 정보