TFS生成后powershell脚本未看到来自导入模块的命令

TFS生成后powershell脚本未看到来自导入模块的命令,powershell,tfs,dynamics-crm-2011,Powershell,Tfs,Dynamics Crm 2011,我们有一个使用自定义模板的TFS构建过程。成功创建crm解决方案文件后,构建工作正常。然后,我们尝试在后期生成上运行powershell脚本。此脚本导入一个模块。但是模块中的命令没有公开。每当我们试图调用一个命令时,就会出现一个错误。沿着 术语“Get XrmSolution”未被识别为cmdlet的名称, 函数、脚本文件或可操作程序 不管我们在那个模块中使用哪个命令,我们都会得到同样的错误 为了排除故障,我们已以生成帐户的身份登录到生成服务器,并且可以成功运行我们尝试运行的脚本 将更多输出放入

我们有一个使用自定义模板的TFS构建过程。成功创建crm解决方案文件后,构建工作正常。然后,我们尝试在后期生成上运行powershell脚本。此脚本导入一个模块。但是模块中的命令没有公开。每当我们试图调用一个命令时,就会出现一个错误。沿着

术语“Get XrmSolution”未被识别为cmdlet的名称, 函数、脚本文件或可操作程序

不管我们在那个模块中使用哪个命令,我们都会得到同样的错误

为了排除故障,我们已以生成帐户的身份登录到生成服务器,并且可以成功运行我们尝试运行的脚本

将更多输出放入脚本以进行故障排除

获取模块
列出了Xrm.Framework.CI.PowerShell。-好

Get命令-模块“Xrm.Framework.CI.PowerShell”
不返回任何内容。在控制台中,列出了许多命令


我们是否需要运行powershell后期生成脚本来查看导入模块的内容?

IIRC您必须显式导入模块,而不必假设已加载到用户配置文件或脚本路径上。 假设Module1.psm1与脚本位于同一文件夹中,请使用

Import-Module (Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) 'Module1.psm1')

请注意由MSBuild调用的PowerShell的位性,以及由Visual Studio启动的MSBuild的位性。某些模块只能在32位或64位PowerShell中运行,而不能同时在这两者中运行。您希望确保启动了正确版本的PowerShell。

我也遇到了同样的问题

模块已加载到“C:\Program Files\WindowsPowerShell\Modules”文件夹中(64位)

当我以用户身份登录时,一切看起来都很好,但在TFS构建过程中失败了

解决方案:我必须在PowerShell 64位中卸载模块,然后在PowerShell 32位中重新安装


该模块随后安装在“C:\Program Files(x86)\WindowsPowerShell\Modules”文件夹中。

该模块是从32位PowerShell进程加载的,还是特定于64位的?请记住,VS是32位的,可能会启动32位版本的PowerShell。这是否意味着TFS生成将运行32位PowerShell进程?这可能是相关的。我们正在加载的模块将是64位的。谢谢Keith。这让我们陷入了某种故障排除的轨道。在生成过程参数中将MSBuildPlatform从Auto更改为X86,一切正常。如何执行此操作?我有同样的问题,如果需要从64位msbuild启动32位PowerShell,我想在32位PowerShell中运行脚本。请使用路径
$(WinDir)\SysWOW64\windowspPowerShell\v1.0\PowerShell.exe
。我得到了,这很好。我只是不知道在哪里打这个电话。我是否直接将它放在脚本的开头?如果它来自MSBuild文件,则它将位于
中。