自己运行脚本会输出一件事,而从安装程序运行脚本则会输出另一件事

自己运行脚本会输出一件事,而从安装程序运行脚本则会输出另一件事

我希望这不是一个普遍的问题,我目前在工作中遇到一个行为奇怪的任务。我们有一个应用程序(安装程序)运行一些蝙蝠文件。这里没什么奇怪的。现在我们想安装 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 的虚拟机上运行它,它会输出“1”(真)

我正在运行的同一个 bat 是从我们的安装程序运行的(调用完全相同的 bat 文件)但现在它输出“0”(错误)

这让我觉得这与脚本的调用者有关,但我不知道是什么?有什么想法吗?

相关内容