Win 终端服务器/RDS - 会话重新连接后的动态打印机映射

Win 终端服务器/RDS - 会话重新连接后的动态打印机映射

我正在尝试弄清楚这个问题:当用户断开他在 Office 1 中的 RDS(在 Windows Server 2012 R2 上)会话并在 Office 2 中重新连接时,仍然会映射与 Office 1 相关的所有打印机。

第一个想法是使用任务计划程序在触发器“会话重新连接”上运行 powershell 脚本,该脚本查看“clientname”变量并在重新连接后将所有相关打印机添加到该位置。

问题在于:

  • 使脚本在刚刚重新连接的特定用户的上下文中运行,而不是在某些管理上下文中运行(尝试使用以 Group DOMAIN\Users 身份运行来解决这个问题,但似乎没有达到预期的效果)
  • 当通过任务计划程序运行 PS 脚本时,“clientname”环境变量不可用。似乎它是唯一缺少的变量,但糟糕的是,这正是我在这里需要的变量!

因此,我要么在寻找一种正确解决脚本问题的方法,要么更好的是,当用户从不同位置重新连接终端服务器会话时,是否有已知的最佳实践来处理打印机映射?让纸张出现在遥远的办公室/地点没有多大意义 ;-)

非常感谢。

答案1

不幸的是,我认为最好的选择是有一个脚本,用户可以在重新连接时自行运行。

有几件事会使你很难让某些东西自动执行此操作(有些你已经看到了):

  1. ClientName是用户级环境变量(对于 RDS 服务器上的每个用户来说都是不同的)。
  2. 计划任务将无法访问用户级环境变量(除非是设置为以特定用户身份运行的特定用户)。
  3. 如果用户正在登录,则设置为在用户登录时运行的计划任务将会运行,但不会通过重新连接触发(如果用户正在登录,那么您首先就不会遇到这个问题)。
  4. 在用户上下文中启动的任何进程(例如,如果您有一个在登录时运行并定期检查的 PowerShell 脚本)都会在启动时获得环境的副本,ClientName除非重新启动该进程,否则它在重新连接时不会看到任何变化。生成新进程也无济于事,因为子进程将继承其父进程环境的副本。

相关内容