我们使用自定义模板进行TFS构建过程。构建工作正常,成功创建了crm解决方案文件。然后我们尝试在post build上运行powershell脚本。该脚本导入模块。但是模块中的命令没有暴露。每当我们尝试调用命令时,都会收到错误。
术语“Get-XrmSolution”未被识别为cmdlet的名称, 功能,脚本文件或可操作程序。
我们在该模块中使用哪个命令并不重要,我们会得到同样的错误。
要进行故障排除,我们已在构建帐户的标识下登录构建服务器,并且可以成功运行我们尝试运行的脚本。
在脚本中添加更多输出以进行故障排除......
Get-Module
列出了Xrm.Framework.CI.PowerShell。 - 很好。
Get-Command -Module "Xrm.Framework.CI.PowerShell"
什么都不返回。在控制台中,列出了许多命令。
运行PowerShell后期构建脚本是否需要做些什么才能看到导入模块的内容?
答案 0 :(得分:0)
IIRC您必须明确导入模块,不要假设在用户配置文件上加载,也不要在脚本路径上加载。 假设Module1.psm1与脚本位于同一文件夹中,请使用类似
的内容Import-Module (Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) 'Module1.psm1')
答案 1 :(得分:0)
注意MSBuild调用的PowerShell的位数,以及Visual Studio启动的MSBuild的位数。某些模块仅在32位或64位PowerShell中运行,而不是两者都运行。您希望确保正在启动正确版本的PowerShell。
答案 2 :(得分:0)
我有同样的问题。
该模块已加载到“ C:\ Program Files \ WindowsPowerShell \ Modules”文件夹中(64位)。
当我以用户身份登录时,一切似乎都很好,但是在TFS构建期间失败。
解决方案:我必须在PowerShell 64位中卸载该模块,然后在PowerShell 32位中重新安装。
然后将该模块安装在“ C:\ Program Files(x86)\ WindowsPowerShell \ Modules”文件夹中。