TFS post build powershell脚本没有看到导入模块的命令

时间:2014-01-28 16:59:39

标签: powershell tfs dynamics-crm-2011

我们使用自定义模板进行TFS构建过程。构建工作正常,成功创建了crm解决方案文件。然后我们尝试在post build上运行powershell脚本。该脚本导入模块。但是模块中的命令没有暴露。每当我们尝试调用命令时,都会收到错误。

  

术语“Get-XrmSolution”未被识别为cmdlet的名称,   功能,脚本文件或可操作程序。

我们在该模块中使用哪个命令并不重要,我们会得到同样的错误。

要进行故障排除,我们已在构建帐户的标识下登录构建服务器,并且可以成功运行我们尝试运行的脚本。

在脚本中添加更多输出以进行故障排除......

Get-Module列出了Xrm.Framework.CI.PowerShell。 - 很好。

Get-Command -Module "Xrm.Framework.CI.PowerShell"什么都不返回。在控制台中,列出了许多命令。

运行PowerShell后期构建脚本是否需要做些什么才能看到导入模块的内容?

3 个答案:

答案 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”文件夹中。