You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过PowerShell在Google Cloud Windows VM预启动桌面程序并解决RDP注销问题

针对Google Cloud Windows VM的两个RDP/PowerShell问题解答

问题1:通过PowerShell启动桌面程序,让RDP登录时程序已运行

当然可以实现,核心是要让程序在用户的桌面会话中启动,而不是PowerShell的后台无界面会话。这里有两种可靠的实操方法:

方法1:用Start-Process指定目标会话

如果已经通过RDP登录过(哪怕当前断开了,只要会话没被注销),先通过PowerShell获取你的用户会话ID:

# 查询所有活跃用户会话,找到你用户名对应的SessionId
quser

拿到会话ID后,用以下命令启动程序:

Start-Process -FilePath "C:\你的程序路径\SlowProgram.exe" -SessionId <你的会话ID>

程序会直接在你之前的桌面会话中运行,下次RDP连接时就能看到它已经在后台加载完成了。

方法2:创建登录触发的计划任务(适合长期自动启动场景)

如果需要程序每次用户登录(包括RDP登录)时自动启动,或者用户还未登录的情况下预启动,可以用PowerShell创建计划任务:

# 定义任务动作:启动目标程序
$taskAction = New-ScheduledTaskAction -Execute "C:\你的程序路径\SlowProgram.exe"
# 定义触发条件:用户登录时
$taskTrigger = New-ScheduledTaskTrigger -AtLogOn -User "你的Windows用户名"
# 注册任务
Register-ScheduledTask -TaskName "AutoStartSlowApp" -Action $taskAction -Trigger $taskTrigger -User "你的Windows用户名" -Password "你的用户密码"

后续无论是通过RDP还是本地登录,程序都会自动启动,用PowerShell创建的任务也完全适配桌面会话环境。


问题2:解决关闭RDP后用户自动注销、会话终止的问题

这个是Windows默认的远程桌面会话超时策略导致的,你可以通过以下方式修改:

方法1:本地组策略编辑器(图形界面操作直观)

  1. 在VM中打开gpedit.msc(可以直接在PowerShell里输入这个命令启动)
  2. 导航到路径:计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 会话时间限制
  3. 找到并修改以下两个关键设置:
    • 设置断开连接的会话的时间限制:设为“已启用”,然后选择“从不”
    • 设置活动但空闲的远程桌面服务会话的时间限制:根据需求,也可设为“已启用”并选择“从不”
  4. 应用设置后,重启远程桌面服务或VM即可生效。

方法2:PowerShell修改注册表(无图形界面场景适用)

直接修改注册表对应键值,无需打开组策略:

# 修改断开连接的会话永不超时
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\WinStations\RDP-Tcp" -Name "MaxDisconnectionTime" -Value 0
# 修改空闲会话永不超时
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\WinStations\RDP-Tcp" -Name "MaxIdleTime" -Value 0
# 禁用会话断开后自动注销
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server" -Name "fResetBroken" -Value 0

修改完成后,重启远程桌面服务使设置生效:

Restart-Service TermService -Force

额外注意:Google Cloud VM专属检查

部分Google Cloud Windows VM默认启用了实例级的闲置注销策略,你需要在控制台确认:

  • 登录Google Cloud控制台,找到目标VM实例
  • 进入“编辑”页面,查看“远程桌面”模块,确保未勾选“闲置时自动注销”类的选项(如有则取消)

内容的提问来源于stack exchange,提问作者Royi

火山引擎 最新活动