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