2

Я пишу скрипт Powershell для полной сборки Windows 7. У меня есть функция, которая добавляет пользователей, которые мне нужны, но она не устанавливает Домашний каталог, что приводит к сбою в работе более поздней части моего сценария (настройка рабочих столов пользователей), поскольку каталоги «еще не существуют».

Вот основная часть функции:

 [CmdletBinding()] 
 Param( 
  [Parameter(Position=0, 
      Mandatory=$True, 
      ValueFromPipeline=$True)] 
  [string]$userName, 
  [Parameter(Position=1, 
      Mandatory=$True, 
      ValueFromPipeline=$True)] 
  [string]$password, 
  [string]$computerName = $env:ComputerName, 
  [string]$description = "Created by PowerShell" 
 ) 
 $computer = [ADSI]"WinNT://$computerName" 
 $user = $computer.Create("User", $userName) 
 $user.setpassword($password) 
 $user.put("description",$description)  
 $user.SetInfo() 
} #end function New-LocalUser 

Есть ли где-нибудь там, чтобы добавить что-то вроде $ user.put("HomePath", "\Users\automotive\Desktop"), например, чтобы это не нарушало последующую часть моего скрипта.


Вот код, который я использую в своем скрипте Users.cmd:

Вот код в моем .cmd файле:

SETLOCAL 

SET Profile=C:\Users
SET user=cars
SET password=cars

SET PSEXEC="C:\Program Files\SysinternalsSuite\PsExec.exe" 
SET wmic=%windir%\System32\Wbem\WMIC

FOR /F "tokens=2* delims= " %%I IN ('REG QUERY ^"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList^" /v ProfilesDirectory^|find /i ^"ProfilesDirectory^"') DO (SET ProfilesDirectory=%%J) 
@echo ProfilesDirectory: %ProfilesDirectory% 

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%Profile%" /f
REG ADD "HKCU\Software\Systinternals\PsExec" /v EulaAccepted /t REG_DWORD /d 1 /f

NET USER /add %user% %password% /comment:"Account for User" /expires:never /homedir:%Profile%\%user% 
NET LOCALGROUP Administrators /add %user%
%PSEXEC% -h -u %user% -p %password% "%wmic% QUIT"

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%ProfilesDirectory%" /f

Я вызываю это с помощью этой команды, а затем мои команды для создания нового рабочего стола.

\Windows\System32\cmd /c c:\Users\Administrator\Desktop\Users.cmd -wait

Remove-Item \Users\cars\Desktop -recurse -force
Copy-Item E:\"Desktop Cars" C:\Users\cars Desktop -recurse

Команды DOS работают нормально, пока не доберутся до

%PSEXEC% -h -u %user% -p %password% "%wmic% QUIT"

За этим следует все это красным цветом, прежде чем он доберется до последней команды REG ADD -

C:\>"C:\Program Files\SysinternalsSuite\PsExec.exe"  -h -u cars -p cars "C:\Windows\System32\Wbem\WMIC QUIT" 
cmd.exe : 
At C:\Users\Administrator\Desktop\Desktops.ps1:3 char:22
+ \Windows\System32\cmd <<<<  /c c:\Users\Administrator\Desktop\Users.cmd -wait
+ CategoryInfo          : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com


The system cannot find the file specified.

Connecting to local system...Starting PsExec service on local system...Connecting with PsExec service on ccm2756...Starting C:\Windows\
System32\Wbem\WMIC QUIT on ccm2756...
PsExec could not start C:\Windows\System32\Wbem\WMIC QUIT on ccm2756:

После этого он добавил учетную запись и команды для изменения рабочего стола, но файлы рабочего стола пользователя "используются", пока я не перезагружаю систему.

1 ответ1

1

Добавьте пользователя и установите Домашний каталог на локальном:

NET USER UserName DerParol /add /comment:"Account for User" /expires:never /homedir:C\Acc\UserName

Добавить пользователя в локальную группу администраторов.

NET LOCALGROUP Administrators /add UserName

PSexec часть Sysinternals Suite

Создать профиль пользователя,

proinit.cmd:

@ECHO OFF
SETLOCAL

SET Profile=C:\Acc
SET user=Troll
SET password=DerParol

SET PSEXEC="C:\Program Files\SysinternalsSuite\PSEXEC"
SET wmic=%windir%\system32\wbem\wmic

FOR /F "tokens=2* delims= " %%I IN ('REG QUERY ^"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList^" /v ProfilesDirectory^|find /i ^"ProfilesDirectory^"') DO (
SET ProfilesDirectory=%%J)
@echo ProfilesDirectory: %ProfilesDirectory%

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%Profile%" /f
REG ADD "HKCU\Software\Sysinternals\PsExec" /v EulaAccepted /t REG_DWORD /d 1 /f

NET USER /add %user% %password% /comment:"Account for User" /expires:never /homedir:%Profile%\%user% /profilepath:%Profile%\%user%
NET LOCALGROUP Administrators /add %user%
%PSEXEC% -h -u %user% -p %password% "%wmic% QUIT"

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%ProfilesDirectory%" /f

Проверьте команду <code> net user </code>

Домен, используйте: dsadd user

@ECHO OFF
@SET user=UserName
@SET password=DerParole

@SET pwdSet=-canchpwd yes -pwdneverexpires yes
::-mustchpwd yes

@SET accSet=-disabled no -acctexpires never -upn %user%@%USERDNSDOMAIN% -samid %user%
@SET dirSet=-profile \\SERV\Acc\%user% -hmdrv R: -hmdir \\SERV\Acc\%user% -loscr enver.cmd
@SET Brand=-office "Grand-1" -company TT -dept HT -title MegaUser
@SET locSet=-tel 914-55-04-42 -email %user%II@%USERDNSDOMAIN% -webpg %user%.%USERDNSDOMAIN% 
@SET callIn=-hometel 9-slip-010-292 -pager 1022 -mobile "8(777) 101-44-22" -fax "977-101-44-22" -iptel 6002
@SET nameSt=-fn User -ln Name -mi "U.N." -display "UserName II"
@SET Description=-desc "Account for User"

::@SET cmSet=@ECHO dsadd user
@SET cmSet=dsadd user

@For /F %%a In ('dsquery * -filter "(objectCategory=domain)"') Do @SET dc=%%a

@SET dn="cn=%user%,cn=users,%dc:~1%
::@SET grpSet=-memberof "cn=ResourceGroup,cn=users,%dc:~1%

%cmSet% -pwd %password% %dn% %pwdSet% %accSet% %dirSet% %Brand% %locSet% %callIn% %nameSt% %Description% -uc

dsquery *  -filter "(samAccountName=%user%)" -attr * | more

Тестовый пакетный сценарий пользователя dsadd:

тестовый пакетный сценарий пользователя dsadd

Массовый импорт CSVDE.

См. Пошаговое руководство по массовому импорту и экспорту в Active Directory.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .