Définition du répertoire de base pour les utilisateurs nouvellement ajoutés

2

J'écris un script Powershell pour créer une version complète de Windows 7. J'ai une fonction qui ajoute les utilisateurs dont j'ai besoin, mais elle ne définit pas le répertoire de base, ce qui fait qu'une section ultérieure de mon script (définition du bureau des utilisateurs) échoue car les répertoires "n'existent pas".

Voici la partie principale de la fonction:

 [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 

Y a-t-il quelque chose là-dedans pour ajouter quelque chose qui s'apparente à $ user.put ("HomePath", "\ Users \ automotive \ Desktop") par exemple pour qu'il ne casse pas la dernière partie de mon script.


Voici le code que j'utilise dans mon script Users.cmd:

Voici le code dans mon fichier .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

Je l'appelle avec cette commande, suivie de mes commandes pour créer le nouveau bureau.

\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

Les commandes DOS s'exécutent bien jusqu'à ce qu'il arrive à

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

Tout cela est suivi en rouge avant que la dernière commande REG ADD ne soit transmise -

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:

Après cela, il a ajouté le compte et les commandes permettant de modifier le travail du Bureau, mais les fichiers du Bureau de l'utilisateur sont "en cours d'utilisation" jusqu'au redémarrage du système.

BigRedEO
la source
1
Leur dossier utilisateur / poste de travail n’existera que lorsqu’ils se connecteront pour la première fois.
cʜιᴇ007
1
Exactement techie007 - Je cherche un moyen de créer ces dossiers à l'aide de Powershell (la création se déroule dans un seul script). C'est l'un des rares problèmes que j'ai rencontrés jusqu'à présent. Je pense que cela peut être lié au répertoire "\ Utilisateurs \ Par défaut" qui existe déjà sur le système, mais je ne sais pas comment l'utiliser ni le mettre en œuvre avec Powershell.
BigRedEO

Réponses:

1

Ajouter un utilisateur et définir le répertoire de base au niveau local:

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

Ajouter un utilisateur au groupe Administrateurs local.

NET LOCALGROUP Administrators /add UserName

PSexecfait partie de la suite Sysinternals

Créer un profil utilisateur,

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

Tester la commande <code> net user </ code>

Domaine, utilisation: 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

Script batch de test utilisateur dsadd:

script batch de test utilisateur dsadd

Importation en vrac CSVDE.

Voir: Guide pas à pas de l'importation en bloc et de l'exportation vers Active Directory

STTR
la source
1
Il existe quelques problèmes avec la commande NET USER / add, STTR. Il l'ajoute en tant que compte standard et je dois l'ajouter en tant que compte administrateur et (au moins jusqu'à présent) je n'ai pas trouvé d'option pour l'ajouter en tant que tel. Deuxièmement, j'ai testé la commande NET USER / add puis exécuté un "md \ Users \ username", mais dès que je me connecte en tant que cet utilisateur, il crée un tout autre répertoire en tant que "\ Users \ username.computername \" . Besoin de trouver un moyen de régler cela afin que les commandes de copie fonctionnent plus tard dans le script.
BigRedEO
@BigRedEO net localgroup Administrators /add UserNamePas besoin "md \Users\username"
STTR
1
Cela va ajouter un utilisateur au groupe Administrateurs, merci, mais cela ne résout pas le problème du répertoire de base de chaque utilisateur qui n'a pas été créé avant la première connexion de cet utilisateur. Je pense que cela a peut-être quelque chose à voir avec le répertoire "Default" trouvé dans "\ Users"? En d’autres termes, lorsque vous vous connectez pour la première fois à un nouveau compte et que vous dites «Préparer votre bureau», expliquez ce qui s’exécute actuellement pour préparer le bureau. Est-ce que cela pourrait me donner ce dont j'ai besoin pour activer le répertoire d'accueil des utilisateurs?
BigRedEO
@ BigRedEO Ce que vous voulez - Profile Path. Alors ce qui a été demandé - Home Directory. Comprenez exactement ce dont vous avez besoin.
STTR
@BigRedEO Script de test mis à jour proinit.cmd.
STTR