如何在单个代理池下的所有代理上运行powershell脚本

如何在单个代理池下的所有代理上运行powershell脚本,powershell,tfs,msbuild,continuous-integration,azure-pipelines-release-pipeline,Powershell,Tfs,Msbuild,Continuous Integration,Azure Pipelines Release Pipeline,我使用Visual Studio测试版本2设置了发布定义 我创建了一个代理阶段,然后创建了VisualStudioTestV2任务,用于并行执行测试运行 问题:在同一代理阶段执行VISUAL STUDIO TEST V2任务之前,我想在代理池中的所有生成代理(十台机器)上运行power shell脚本。有什么方法可以做到这一点或其他解决方法吗?对我来说,唯一可以做到的方法是为需要运行脚本的每个代理创建一个代理阶段,并使用代理设置需求。Name等于yourAgentName。 这将允许您确保所有代

我使用Visual Studio测试版本2设置了发布定义

我创建了一个代理阶段,然后创建了VisualStudioTestV2任务,用于并行执行测试运行


问题:在同一代理阶段执行VISUAL STUDIO TEST V2任务之前,我想在代理池中的所有生成代理(十台机器)上运行power shell脚本。有什么方法可以做到这一点或其他解决方法吗?

对我来说,唯一可以做到的方法是为需要运行脚本的每个代理创建一个代理阶段,并使用代理设置需求。Name等于yourAgentName。
这将允许您确保所有代理都是目标代理。

对我来说,唯一的方法是为需要运行脚本的每个代理创建一个代理阶段,并使用代理设置需求。Name等于yourAgentName。
这将允许您确保所有代理都是目标。

如果您只想在VS测试任务之前为每个代理计算机分别运行PowerShell任务,您可以在相同的代理阶段添加这两个任务,并将代理阶段设置为:

然后任务按如下顺序执行:

agent 1 - PowerShell task
agent 1 - VS Test task
agent 2 - PowerShell task
agent 2 - VS Test task
...
agent 10 - PowerShell task
agent 10 - VS Test task
agent 1 - PowerShell task
agent 2 - PowerShell task
...
agent 10 - PowerShell task
agent 1 - VS Test task
agent 2 - VS Test task
...
agent 10 - VS Test task
如果要先在每台代理计算机上执行PowerShell任务,然后在每台代理计算机上执行VS Test task,则应在两个代理阶段中添加这两个任务,并将两个代理阶段设置为:

然后,任务执行顺序如下所示:

agent 1 - PowerShell task
agent 1 - VS Test task
agent 2 - PowerShell task
agent 2 - VS Test task
...
agent 10 - PowerShell task
agent 10 - VS Test task
agent 1 - PowerShell task
agent 2 - PowerShell task
...
agent 10 - PowerShell task
agent 1 - VS Test task
agent 2 - VS Test task
...
agent 10 - VS Test task

如果您只想分别为每台代理计算机运行PowerShell task before VS Test task,则可以在同一代理阶段添加这两个任务,并将代理阶段设置为:

然后任务按如下顺序执行:

agent 1 - PowerShell task
agent 1 - VS Test task
agent 2 - PowerShell task
agent 2 - VS Test task
...
agent 10 - PowerShell task
agent 10 - VS Test task
agent 1 - PowerShell task
agent 2 - PowerShell task
...
agent 10 - PowerShell task
agent 1 - VS Test task
agent 2 - VS Test task
...
agent 10 - VS Test task
如果要先在每台代理计算机上执行PowerShell任务,然后在每台代理计算机上执行VS Test task,则应在两个代理阶段中添加这两个任务,并将两个代理阶段设置为:

然后,任务执行顺序如下所示:

agent 1 - PowerShell task
agent 1 - VS Test task
agent 2 - PowerShell task
agent 2 - VS Test task
...
agent 10 - PowerShell task
agent 10 - VS Test task
agent 1 - PowerShell task
agent 2 - PowerShell task
...
agent 10 - PowerShell task
agent 1 - VS Test task
agent 2 - VS Test task
...
agent 10 - VS Test task

您尝试过部署组吗

我通常需要在我的代理机器上一次又一次地运行一些安装脚本,我意识到最好的方法是通过部署组。在根据代理池配置计算机时,还要根据自定义部署池设置部署代理。因此,同一台机器有一个代理和一个部署代理进程正在运行

在部署池中列出所有计算机之后,我需要做的就是创建一个具有部署组阶段的新版本,添加脚本并运行该版本。然后在所有参与机器上执行脚本


您是否尝试过部署组

我通常需要在我的代理机器上一次又一次地运行一些安装脚本,我意识到最好的方法是通过部署组。在根据代理池配置计算机时,还要根据自定义部署池设置部署代理。因此,同一台机器有一个代理和一个部署代理进程正在运行

在部署池中列出所有计算机之后,我需要做的就是创建一个具有部署组阶段的新版本,添加脚本并运行该版本。然后在所有参与机器上执行脚本


您需要为10到50个代理创建10到50个代理阶段吗?这就是你的意思?我就是这么看的。也许有一个更简单的方法,我需要一个简单的方法。这就是我要找的。。。谢谢你需要为10到50个代理创建10到50个代理阶段吗?这就是你的意思?我就是这么看的。也许有一个更简单的方法,我需要一个简单的方法。这就是我要找的。。。谢谢如果我们在一个阶段使用多代理选项,那么为什么需要为每个代理执行此操作?同样,如果您选择了上述选项,VsTest V2将在所有代理上以单阶段执行。若我在VsTest任务之前添加powershell脚本,那个么它也应该像VsTest任务一样在所有代理上执行。你认为呢?@DevOps使用一个代理阶段或两个代理阶段的主要区别在于执行顺序。如果两个任务处于同一代理阶段,它将为每个代理阶段执行这两个任务。如果对每个任务使用两个代理阶段,它将执行Powershell任务10次,然后执行VS Test任务10次。当我执行与该生成代理上安装的SQL连接的Powershell脚本时,它会引发以下错误:错误:使用“0”参数调用“Open”时出现异常:“建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:26-指定了错误定位服务器/实例)“10秒后重试。剩余尝试次数:5次错误:@DevOps错误消息主要取决于您编写的脚本,这与此问题是不同的问题。@DevOps如果此问题已解决,您可以单击标记答案√ 答案左侧的符号。对于连接SQL server的错误,您可以创建一个新问题,其中包含脚本和详细信息日志。它还将帮助搜索相关问题的其他成员。如果我们在某个阶段使用多代理选项,那么为什么需要为每个代理执行此操作?例如,VsTest V2将在al上执行如果您选择了上述选项,则在单阶段中删除代理。如果我在VsTest任务之前添加powershell脚本,则它也应该像VsTest任务一样在单阶段中的所有代理上执行。您认为如何?@DevOps使用一个代理阶段或两个代理阶段的主要区别在于执行顺序。如果在同一代理阶段中的两个任务,它将执行t他为每个代理阶段执行两个任务。如果为每个任务使用两个代理阶段,则它将执行POW