【问题标题】:Run Windows application on Build Server by TFS Release Build Definition通过 TFS Release Build Definition 在 Build Server 上运行 Windows 应用程序
【发布时间】:2019-02-04 17:14:08
【问题描述】:

使用 powershell 或批处理脚本在构建服务器上运行记事本或任何其他具有发布定义的 Windows 应用程序: 我尝试了所有我知道的命令:

& ′notepad.exe′
Invoke-Expression -Command ′notepad.exe′
Start-Process -FilePath ′notepad.exe′
[System.Diagnostics.Process]::Start(′notepad.exe′)
([wmiclass]″Win32_Process″).Create(′notepad.exe′)
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″notepad.exe″
Invoke-Command -ScriptBlock {& notepad.exe′}
cmd /c ″notepad.exe″

在服务器本身上运行时,一切正常(启动记事本或任何其他 win 应用程序) 但 当我尝试通过 TFS 发布定义运行时:命令结束成功但在构建服务器上 - 没有任何反应。

任何想法!!!

【问题讨论】:

  • 您如何确定什么都不会发生?如果您已登录到构建服务器,但记事本是由用户打开构建/发布过程执行的,您将看不到它。
  • 我检查了我的构建服务器,我想看看记事本是打开的......事实上,那里什么都没有发生,只是在任务管理器中我可以看到后台进程中正在运行的东西......但我没有想看看进程,我想通过TFS Release Defenitions远程启动记事本!
  • 记事本是一个糟糕的选择,因为它是一个 GUI 应用程序。您的实际目标是什么?
  • 实际目标是运行 GUI 应用程序,记事本就是为此目的(例如)

标签: powershell tfs tfsbuild build-definition vnext


【解决方案1】:

如果您的代理在交互模式下运行并且所有其他设置均已正确配置,则答案是该命令有效。但问题是,一旦构建/发布完成,所有启动的进程都会关闭。所以你在检查时没有看到启动的应用程序。要验证这一点,请使用以下命令添加一个 powershell 脚本任务:

Start-Process -FilePath 'C:\Windows\System32\notepad.exe' -wait

运行发布并检查服务器,您应该会看到记事本已打开。但是,此命令将导致发布在您关闭记事本之前永远不会完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多