#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
вы не сможете найти рабочее пространство для пользователя, который инициировал удаленный сеанс на этом компьютере.