PowerShell (2.0, 32-разрядная версия) не может загрузить оснастку TFS 2010… кроме случаев, когда это возможно

У меня есть сценарий PowerShell, который взаимодействует с Team Foundation Server. Когда я запускаю его в консоли PowerShell, он работает отлично. Это хорошо для тестирования, но я хочу запустить его, дважды щелкнув по нему, или по пакетному файлу или что-то еще. Я'даже согласился бы кликнуть на нем правой кнопкой мыши и выбрать "Запускать с PowerShell ".

Но когда я это делаю, я получаю ошибку. "Запускать с PowerShell » закрывает окно слишком быстро, чтобы увидеть, что это за ошибка. Кто-то действительно думал, когда разрабатывал это, возможно, Балмер был вовлечен. Я также могу запустить его в cmd.exe, например, так:

PowerShell -File dostufftocheckouts.ps1

Когда я это делаю, я вижу сообщение об ошибке, и яЯ предполагаю, что это может быть то же самое:

Get-PSSnapin : No Windows PowerShell snap-ins matching the pattern 
'Microsoft.TeamFoundation.PowerShell' were found. Check the pattern and then 
try the command again.

Следующий код включен в скрипт прежде всего:

if ((Get-PSSnapin -Name  Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin  Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue
}

Когда я запускаю новый экземпляр интерактивной оболочки PowerShell и запускаю сценарий, все работает отлично.

ОБНОВИТЬ

Я получаю ту же ошибку с любым из следующих исполняемых файлов PowerShell (так как я помню, что оснастка TFS была только 32-разрядной):

C:\windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe

В cmd.exe следующая команда выдает следующий вывод:

c:\ powershell -Command "get-pssnapin -registered | where { $_.Name -eq 'TfsBPAPowerShellSnapIn' }"

Name        : TfsBPAPowerShellSnapIn
PSVersion   : 2.0
Description : This is a PowerShell snap-in that includes Team Foundation Server cmdlets.

Так что я'Мы написали очень минимальный скрипт, joke.ps1:

Add-PsSnapin TfsBPAPowerShellSnapIn

$server = Get-TfsServer tfsserver/DefaultCollection

И я запускаю это:

c:\ powershell -File .\joke.ps1

The term 'Get-TfsServer' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Users\jmcnamara\PowerShell\broken.ps1:3 char:24
+ $server = Get-TfsServer <  gearys/DefaultCollection
    + CategoryInfo          : ObjectNotFound: (Get-TfsServer:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Ответы на вопрос(1)

Ваш ответ на вопрос