Удаленная проверка TFS через Powershell

#powershell #tfs #azure-devops

#powershell #tfs #azure-devops

Вопрос:

В настоящее время у нас есть запланированная задача на каждом локальном компьютере, на котором выполняется команда «TF.exe /проверка» при удаленном запуске с помощью schtasks. это делается для того, чтобы, когда кто-то забывает зарегистрироваться, у нас был способ сделать это удаленно.

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

Это нормально выполняется на локальном компьютере

 Invoke-Command -ScriptBlock {amp; 'C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorertf.exe' checkin /recursive}
 

Однако при добавлении -ComputerName он не работает со следующей ошибкой.

 Invoke-Command -ComputerName *ComputerName* -ScriptBlock {amp; 'C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorertf.exe' check-in /recursive}
 

Не удалось определить рабочее пространство. Возможно, вы сможете исправить это, выполнив команду ‘tf workspaces / collection: TeamProjetCollectionURL’.
CategoryInfo: не указано (невозможно определить…ColletionUrl’.:строка [], Remoteexpection

Есть идеи, как это исправить? Я уже пробовал /collection:https://tfsserver:port/collectionanme, но это тоже не работает

Ошибка: опция / коллекция не может быть использована без опции / shelveset, что странно, поскольку я не использую /shelveset .

——Обновить—-

Смотрите Изображение ниже, перед запуском сценария powershell я проверил файл на своем локальном компьютере, затем запустил Enter-PSSession на удаленном компьютере, а затем запустил invoke-command, который по-прежнему проверялся только в моих локальных файлах, а не на удаленном компьютере. введите описание изображения здесь
введите описание изображения здесь

—обновление 04/12—

Я не знаю, почему это не работает та же проблема «невозможно определить рабочее пространство» введите описание изображения здесь

Ответ №1:

Вам необходимо указать путь к рабочей области в удаленном сеансе со следующим кодом:

 $session = New-PSSession -ComputerName ComputerName
Invoke-Command -Session $session -ScriptBlock { Set-Location D:workspace}
Enter-PSSession -Session $session
 

введите описание изображения здесь

Затем запустите команду tf:

 Invoke-Command -ScriptBlock {amp; 'C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorertf.exe' checkin /recursive}
 

Весь результат:

введите описание изображения здесь

Комментарии:

1. Привет, спасибо за ответ, но когда я попробовал, он проверил только мои файлы, а не те, что на удаленном компьютере: D

2. Когда вы запускаете $session = New-PSSession -ComputerName ComputerName Invoke-Command -Session $session -ScriptBlock { Set-Location D:workspace} Enter-PSSession -Session $session , видите ли вы, что он возвращает путь к удаленному компьютеру? Я добавил скриншоты для вашей справки.

3. Я обновил OT, пожалуйста, посмотрите на проблему. Да, если я выполняю приведенный выше код, я вижу удаленный компьютер, так как [ComputerName]: PS C:U_C> при запуске Invoke-Command -ScriptBlock {amp; 'C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorertf.exe' checkin /recursive} я получаю то же самое «Невозможно определить рабочее пространство». Возможно, вы сможете исправить это, выполнив команду ‘tf workspaces / collection: TeamProjetCollectionURL’. CategoryInfo: не указано (невозможно определить… ColletionUrl’.:string [], Remoteexpection’

4. Сначала вам нужно бежать $session = New-PSSession -ComputerName ComputerName Invoke-Command -Session $session -ScriptBlock { Set-Location D:workspace} Enter-PSSession -Session $session , когда он вернется [ComputerName]: PS C:U_C> , бегите Invoke-Command -ScriptBlock .

5. И убедитесь, что удаленный сеанс либо использует пользователя, которому принадлежит рабочее пространство, либо что рабочее пространство настроено как общедоступное рабочее пространство. В противном случае tf.exe вы не сможете найти рабочее пространство для пользователя, который инициировал удаленный сеанс на этом компьютере.