我在将 PowerShell 脚本作为 TeamCity 构建步骤运行时遇到了一个奇怪的问题,尤其是在使用时SqlPs
(尽管我不确定它是否特定于SqlPs
)。
这个单行脚本在 TeamCity 中失败:
Import-Module SqlPs
出现以下错误:
Import-Module : The specified module 'SqlPs' was not loaded because no valid module file was found in any module directory. At C:\TeamCity\buildAgent\temp\buildTmp\powershell2962302231054758126.ps1:13 char:1 + Import-Module SqlPs + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (SqlPs:String) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands .ImportModuleCommand
我很确定我已经正确配置了所有内容,因为如果我从运行 TeamCity 的 CI 服务器本地打开 PowerShell,我可以毫无问题地运行它。
我什至可以运行 TeamCity 从本机 PowerShell 中生成的上述临时脚本文件,它工作得很好。
此外,如果我Get-Module
从本机 PowerShell 执行:
Get-Module -ListAvailable
它将从以下位置转储几个系统模块:
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
连同来自以下的 SqlSp 模块:
C:\Program Files\Microsoft SQL Server\110\Tools\PowerShell\Modules
但是当我Get-Module
从 TeamCity 构建中运行相同的程序时,它只会列出系统模块——没有SqlSp
模块。
我认为这可能是权限问题,但是当我以 TeamCity 使用的同一帐户登录本机 PowerShell 时,我仍然没有问题。
我还尝试选择 x86 而不是 x64 来排除这种情况,但无论哪种方式都失败了。
加上"SqlPs"
引号也没有帮助。