繁体   English   中英

使用Powershell在“环境”选项卡中为终端服务器客户端分配登录脚本

[英]Assign logon script in Environment Tab for terminal server client using Powershell

嗨,我想使用Powershell为用户配置文件设置登录脚本参数。 我打算使用WMIC USERACCOUNT来执行此操作,但是发现这是不可能的。 如下所示,该方法不存在于方法中:

    class Win32_UserAccount : Win32_Account
{
  uint32   AccountType;
  string   Caption;
  string   Description;
  boolean  Disabled;
  string   Domain;
  string   FullName;
  datetime InstallDate;
  boolean  LocalAccount;
  boolean  Lockout;
  string   Name;
  boolean  PasswordChangeable;
  boolean  PasswordExpires;
  boolean  PasswordRequired;
  string   SID;
  uint8    SIDType;
  string   Status;
};

我希望将其作为Powershell中的语句来执行,但是如果不可能,可以将其作为脚本来完成,我希望为Win Server 2008 R2设置如图所示的参数 这个参数

该设置通过组策略维护,请参考: 指定当用户登录时自动启动的程序 组策略设置最终由注册表设置处理。 Windows和Windows Server组策略设置参考可能会帮助您找到要更改的注册表设置,但是我在这里找不到运气。 您会注意到,很多设置都是HKCU,这意味着只能在用户登录时进行设置。这可能对您造成问题。 Windows程序自动启动位置页面是您可以将程序设置为启动的注册表中所有位置的良好参考。

我个人建议使用schtasks代替。 这是在cmd或PowerShell中创建一个的示例:

schtasks -create -tn "Run command prompt" -tr "C:\WINDOWS\system32\cmd.exe" -sc ONLOGON

花费了很长时间,但最终得到了答案,那就是使用IADsTSUserEx 我也尝试使用ADSI,但只能获取它来设置登录脚本以登录本地。 参见其他帖子 这是Elijiah的代码以及如何通过注册表设置本地用户的环境变量

# adds user
$objComputer = [ADSI]"WinNT://127.0.0.1"
$objUser = $objComputer.Create('user', $username)
$objUser.SetPassword($password)
$objUser.PSBase.InvokeSet('Description', "user " + $userName)
$objUser.PSBase.InvokeSet('userflags', 512)
$objUser.SetInfo();
# set password not to expire
wmic USERACCOUNT WHERE "Name = '$username'" SET Passwordexpires=FALSE
#set logoff script
$ou = [adsi]"WinNT://127.0.0.1"
$user = $ou.psbase.get_children().find("test")
$user.PSBase.InvokeSet("TerminalServicesInitialProgram", "C:\logoff.bat")
$user.setinfo()
#add to group
net localgroup $groupname $username /add
net localgroup "Remote Desktop Users" $username /add
#remote login
cmdkey /generic:TERMSRV/127.0.0.1 /user: $username /pass: $password
#add logoff script
#launch remote desktop
mstsc /v:127.0.0.1 | Out-Null
cmdkey /delete:TERMSRV/127.0.0.1
#load hive
reg load HKU\%username% "C:\Users\$username\NTUSER.dat"
#set environment valiables
Set-ItemProperty -Path HKU:\$username\Environment -Name SERVERTYPE -Type STRING -Value DIR
#Unload hive
reg unload HKU\$username  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM