当TeamCity Powershell运行器运行我的.ps1文件时,它无法识别Write-Zip命令,它是Powershell社区扩展的一部分。未被TeamCity PowerShell Runner识别的PowerShell社区扩展
我可以在构建服务器上手动运行相同的命令,它工作得很好。我已经验证了TeamCity和我都在运行powershell.exe的x64版本,并且两者都以同一用户身份运行。
[17:21:22][Step 5/5] Packaging WWW.zip
[17:21:45][Step 5/5] Write-Zip : The term 'Write-Zip' is not recognized as the name of a cmdlet,
[17:21:45][Step 5/5] function, script file, or operable program. Check the spelling of the name, or
[17:21:45][Step 5/5] if a path was included, verify that the path is correct and try again.
[17:21:45][Step 5/5] At
[17:21:45][Step 5/5] C:\TeamCity\buildAgent\work\e19b1309c030c7e2\Build\PowerShell\Package.ps1:20
[17:21:45][Step 5/5] char:1
[17:21:45][Step 5/5] + Write-Zip -InputObject $items -OutputPath .\WWW.zip
[17:21:45][Step 5/5] + ~~~~~~~~~
[17:21:45][Step 5/5] + CategoryInfo : ObjectNotFound: (Write-Zip:String) [], CommandNo
[17:21:45][Step 5/5] tFoundException
[17:21:45][Step 5/5] + FullyQualifiedErrorId : CommandNotFoundException
[17:21:45][Step 5/5]
我认为这可能与PowerShell运行于不同的环境有关,但我还没有完全理解这一点。
我在剧本正在像这样运行的TeamCity构建日志中发现:
C:\Windows\sysnative\cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -ExecutionPolicy ByPass -File C:\TeamCity\buildAgent\work\e19b1309c030c7e2\Build\PowerShell\Package.ps1 -WorkingDirectory C:\TeamCity\buildAgent\work\e19b1309c030c7e
注意,PowerShell是正在运行C:\ WINDOWS \ sysnative \ cmd.exe的
然而,在构建服务器上,我没有看到此目录或cmd.exe版本,并且如果我尝试从PowerShell或命令提示符运行相同的命令,则表示它找不到C:\ Windows \ sysnative \ cmd .exe
有谁知道TeamCity a通常运行Powershell?
更新
我试图运行使用命令行亚军我的PowerShell脚本,然后调用使用-file命令一样的TeamCity会做powershell.exe。
我有任务管理器运行,看到cmd.exe进程它跑为C:\ WINDOWS \ Syswow64资料\ cmd.exe的
我得到了确切的相同的错误上面印,写-Zip是无法识别。但是,如果我手动在... \ SysWOW64 \ cmd.exe中运行相同的命令,它将起作用。
再次,无论是运行在同一台机器上相同的用户,根据任务管理器
仅供参考PSCX模块由于处于PSModulePath系统环境目录中而被找到。我想知道TeamCity是否没有看到PSModulePath?你刚安装PSCX吗? –
安装了最新的PSCX后,我遇到了同样的问题,它破坏了我现有的TC设置。我通过确保机器PSModulePath是最新版本(包括pscx的模块路径)并重新启动机器以使TC看到新值(可能只是重新启动TC足够 - 不确定)来修复它。 – Marcus