2014-01-28 80 views
0

我們有一個使用自定義模板的TFS構建過程。構建工作正常,可成功創建crm解決方案文件。然後我們試圖在發佈版本上運行powershell腳本。這個腳本導入一個模塊。但是模塊中的命令沒有被暴露。每當我們嘗試調用一個命令時,我們都會得到一個錯誤。沿TFS構建PowerShell腳本不能看到來自導入模塊的命令

術語線「GET-XrmSolution」沒有被識別爲cmdlet的名稱, 功能,腳本文件或可操作的程序。

無論我們在該模塊中使用哪個命令,我們都會得到相同類型的錯誤。

要排除故障,我們已經使用構建帳戶的身份登錄到構建服務器,並且可以成功運行我們試圖運行的腳本。

把一些更多的輸出到腳本來解決......

Get-Module名單Xrm.Framework.CI.PowerShell。 - 很好。

Get-Command -Module "Xrm.Framework.CI.PowerShell"什麼也沒有返回。從控制檯中列出了許多命令。

是否有我們需要做的PowerShell後構建腳本的運行,以使被導入的模塊的內容被看到?

+1

該模塊是從32位PowerShell進程加載還是64位特定的?請記住,VS是32位的,可能會啓動32位版本的PowerShell。 –

+0

這是否意味着TFS構建將運行32位PowerShell進程?這可能是相關的。我們加載的模塊將是64位。 –

+0

謝謝基思。這給我們帶來了一定的故障排除。在Build過程參數中將MSBuildPlatform從Auto更改爲X86,並且都很好。 –

回答

0

留意的PowerShell通過的MSBuild調用的位數,同樣,的MSBuild的位數由Visual Studio啓動。某些模塊只能在32位或64位PowerShell中運行,而不能同時運行。您想確保正確版本的PowerShell正在啓動。

+0

你如何做到這一點?我遇到了同樣的問題,我想在32位PowerShell中運行腳本 –

+0

如果需要從64位msbuild啓動32位PowerShell,請使用$(WinDir)\ SysWOW64 \ WindowsPowerShell \ v1.0路徑\ powershell.exe'。 –

+0

我明白了,這很棒。我只是不確定在哪裏打這個電話。我只是將它直接放在我的腳本的開頭? –

0

IIRC您必須明確導入模塊,而不要假設已加載到用戶配置文件中,也不要在腳本路徑中加載。 假設Module1.psm1是在同一文件夾作爲腳本,使用類似

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