如何使用 powershell 在本地用户上设置“环境”>“登录时启动以下程序”属性?

Roa*_*oan 5 windows powershell

背景:
我有一台安装了 Windows 2008 R2 的服务器,作为终端服务器会话主机运行。我有一长串本地用户设置并配置为远程桌面用户。当用户使用远程桌面连接远程登录时,会自动启动一个程序。当用户关闭该程序时,会话结束。如果我手动设置,这一切都很好。

我的问题:
我编写了一个脚本来自动添加本地用户列表并设置和配置属性。问题是我无法找到如何设置“环境”>“登录时启动以下程序”属性。(有关我要设置的属性,请参见图片)

在此输入图像描述

我当前脚本的示例部分如下:

  $computer = "localhost"
  $userName = "aTestUser"
  $objComputer = [ADSI]"WinNT://$computer"
  $objUser = $objComputer.Create('user', $userName)
  $objUser.SetPassword("Password")
  $objUser.PSBase.InvokeSet('Description', "Some description for $userName")
  $objUser.PSBase.InvokeSet('userflags', 512)
  $objUser.PSBase.InvokeSet('passwordExpired', 1)
  $objUser.SetInfo();
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个命令,但不起作用:

  $objUser.PSBase.InvokeSet("TerminalServicesInitialProgram", "C:\programs\a_test_program.exe")  
Run Code Online (Sandbox Code Playgroud)

我在 Microsoft 的 MSDN 网站、Google 和 StackOverflow 上进行了搜索,但找不到这个特定的属性。

小智 3

我在这里找到了解决方案。

$ou = [adsi]"WinNT://127.0.0.1"
$user = $ou.psbase.get_children().find("test")
$user.PSBase.InvokeSet("TerminalServicesInitialProgram", "C:\logoff.bat")
$user.setinfo()
Run Code Online (Sandbox Code Playgroud)