TFS内部版本:此计算机上未安装"Microsoft.TeamFoundation.PowerShell" [英] TFS Build: `Microsoft.TeamFoundation.PowerShell' is not installed on this computer
问题描述
当我使用本地帐户登录到tfs构建服务器并执行以下powershell命令时:
When I'm logged in to tfs build server using local account and execute following powershell command:
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
它将正确加载tfs cmdlet.但是,当我在调用该脚本的tfs服务器上触发构建时,它失败并显示以下消息:
it loads the tfs cmdlets correctly. However, when I trigger a build on tfs server that invokes the script, it fails with message:
此计算机上未安装"Microsoft.TeamFoundation.PowerShell".
'Microsoft.TeamFoundation.PowerShell' is not installed on this computer.
构建代理在服务帐户下运行.我该怎么办?
The build agent runs under service account. What should I do?
编辑: 我必须从@Alexis Coles答案的第一个链接中编辑需求条目,以使其与TFS PowerTools 2015版一起使用:
EDIT: I had to edit the reqistry entry from the first link in @Alexis Coles' answer to make it work with version 2015 of TFS PowerTools:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.TeamFoundation.PowerShell]
"PowerShellVersion"="4.0"
"Vendor"="Microsoft Corporation"
"Description"="This is a PowerShell snap-in that includes the Team Foundation Server cmdlets."
"VendorIndirect"="Microsoft.TeamFoundation.PowerShell,Microsoft"
"DescriptionIndirect"="Microsoft.TeamFoundation.PowerShell,This is a PowerShell snap-in that includes the Team Foundation Server cmdlets."
"Version"="14.0.0.0"
"ApplicationBase"="C:\\Program Files (x86)\\Microsoft Team Foundation Server 2015 Power Tools"
"AssemblyName"="Microsoft.TeamFoundation.PowerTools.PowerShell, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ModuleName"="C:\\Program Files (x86)\\Microsoft Team Foundation Server 2015 Power Tools\\Microsoft.TeamFoundation.PowerTools.PowerShell.dll"
"CustomPSSnapInType"="Microsoft.TeamFoundation.PowerTools.PowerShell.TFPSSnapIn"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.TeamFoundation.PowerShell]
"PowerShellVersion"="4.0"
"Vendor"="Microsoft Corporation"
"Description"="This is a PowerShell snap-in that includes the Team Foundation Server cmdlets."
"VendorIndirect"="Microsoft.TeamFoundation.PowerShell,Microsoft"
"DescriptionIndirect"="Microsoft.TeamFoundation.PowerShell,This is a PowerShell snap-in that includes the Team Foundation Server cmdlets."
"Version"="14.0.0.0"
"ApplicationBase"="C:\\Program Files (x86)\\Microsoft Team Foundation Server 2015 Power Tools"
"AssemblyName"="Microsoft.TeamFoundation.PowerTools.PowerShell, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ModuleName"="C:\\Program Files (x86)\\Microsoft Team Foundation Server 2015 Power Tools\\Microsoft.TeamFoundation.PowerTools.PowerShell.dll"
"CustomPSSnapInType"="Microsoft.TeamFoundation.PowerTools.PowerShell.TFPSSnapIn"
仔细检查AssemblyName
,ApplicationBase
,ModuleName
和Version
条目.上面的脚本可用于 Microsoft Team Foundation Server 2015电动工具
Double check AssemblyName
, ApplicationBase
, ModuleName
and Version
entries. Script above works with Microsoft Team Foundation Server 2015 Power Tools
推荐答案
我将在这里快速介绍一下,并说这可能与32位和64位Powershell有关.如果我从正常的64位Powershell运行Add-PSSnapinicrosoft.TeamFoundation.PowerShell可以.但是,如果我从C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell_ise.exe运行它,则会收到上述异常.我要继续说,构建服务器是32位应用程序,在那里可以启动32位运行时.
I am going to have a quick punt here and say it is probably something to do with 32-bit vs 64-bit powershell. If I run Add-PSSnapinicrosoft.TeamFoundation.PowerShell from normal 64-bit powershell fine. But if I run it from C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe I get the above exception. I am going to go ahead and say that the build server is a 32-bit application and there for starting a 32-bit runtime.
不太确定具体的解决方法是什么,但是以下内容可能会为您指明正确的方向.
Not really sure what the fix is exactly but maybe the following will point you in the right direction.