1

您好我正在寻找使用 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 设置图片中显示的参数 这个参数

4

2 回答 2

1

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

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

schtasks -create -tn "Run command prompt" -tr "C:\WINDOWS\system32\cmd.exe" -sc ONLOGON
于 2012-08-02T17:10:50.687 回答
0

花了很长时间,但最终得到了答案,诀窍是使用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  
于 2012-08-24T15:54:08.730 回答