特に、PowerShell スクリプトを TeamCity ビルド ステップとして実行する際に奇妙な問題が発生していますSqlPs
(ただし、SqlPs
.
この 1 行のスクリプトは 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 にログインすると、まだ問題はありません。
また、それを除外するために、ビット数に x64 の代わりに x86 を選択しようとしましたが、どちらの方法でも失敗します。
引用"SqlPs"
符を付けても役に立ちませんでした。