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.
la source
Réponses:
Ajouter un utilisateur et définir le répertoire de base au niveau local:
Ajouter un utilisateur au groupe Administrateurs local.
PSexec
fait partie de la suite SysinternalsCréer un profil utilisateur,
proinit.cmd:
Domaine, utilisation:
dsadd user
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
la source
net localgroup Administrators /add UserName
Pas besoin"md \Users\username"
Profile Path
. Alors ce qui a été demandé -Home Directory
. Comprenez exactement ce dont vous avez besoin.proinit.cmd
.