Question
Problème d'intégration au domaine RESOLU
- Brice
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 9 ans 1 mois #23084
par Brice
Problème d'intégration au domaine RESOLU a été créé par Brice
Bonjour à tous, 
En ce moment je travaille sur un script que l'on m'a donné a faire, le but étant de récupérer les informations d'un utilisateur sur un fichier texte, pour ensuite créer un nouvel utilisateur avec ses informations sur un domaine dans lequel je ne suis pas. Je dois donc créer un utilisateur local dans un domaine puis rebooter le poste et me connecter directement sur sa session après le redémarrage.
J'effectue donc une recherche du poste dans l'annuaire LDAP, mais c'est a ce point la que ça bloque.J'ai tenté de travaillé avec la méthode FindOne().Path
j'ai ce bout de script :
[code:1]
#--> renseigne les informations de la machine
#Get instance of local computer ComputerSystem WMI Class
$WMIComp = Get-WmiObject -Class Win32_ComputerSystem
#--> va créer une recherche du poste dans le LDAP
#Create a DirectoryEntry object to configure the domain information for the DirectorySearcher
#$SearchBase = Read-Host \"Input the top level OU structure being searched for computer accounts.`r`nExample: `\"OU=Office Computers,OU=Building1,DC=Server,DC=Company,DC=Local`\"\"
$SearchBase = \"ou=Computers,dc=vif,dc=fr\"
$DomainInfo = New-Object System.DirectoryServices.DirectoryEntry('LDAP://$DC:389/$SearchBase',$($Cred.UserName),$($Cred.GetNetworkCredential().Password))
#-->créer une recherche du poste sur l'active directory
#Create a DirectorySearcher object to search Active Directory
$Searcher = New-Object System.DirectoryServices.DirectorySearcher($DomainInfo,'(&(objectCategory=computer)(objectClass=computer)(cn=$NewNameMach))','Path')
#Create search instance with filter and searchroot configured
$CompPath = $Searcher.FindOne().Path
#-->MISE EN PLACE DU POSTE SUR LE DOMAINE
#======================================================
write-host \"`n Mise en place dans le domaine `n\" -foregroundcolor \"Green\"
if ($CompPath -ne $null) {
#--> créer une recherche de l'ordinateur depuis l'annuaire
#Create DirectoryEntry object of computer object returned from search
$ADComputer = New-Object -TypeName System.DirectoryServices.DirectoryEntry($CompPath,$($Cred.UserName),$($Cred.GetNetworkCredential().Password))
#--> propriétés de l'objet ordinateur
#Get 'userAccountControl' property from computer object
$ComputerUAC = $ADComputer.InvokeGet('userAccountControl')
#-->Vérifier que le poste est bien désactivé
#Query 'userAccountControl' property to see if it equals 4098(disabled), if not set it to 4098
If ($ComputerUAC -ne '4098')
{
$ADComputer.InvokeSet('userAccountControl','4098')
}
#--> Valider les modifications
#Commit changes made to Active Directory
$ADComputer.CommitChanges()
#--> Enlève l'ancien compte admin local .
#Use WMI to unjoin local computer from any domain or workgroup it might be previously associated with
$WMIComp.UnjoinDomainOrWorkgroup(($LocalCred.GetNetworkCredential()).Password,$LocalCred.UserName,0)
#--> assigne l'OU et le lecteur réseau à la nouvelle machine
#Use WMI to join local computer to $Domain with $NewNameMach and place into $OU using the password and user name from $Cred
$WMIComp.JoinDomainOrWorkGroup(\"$Domain\",($Cred.GetNetworkCredential()).Password,$Cred.UserName,$OU,0x1+0x20+0x400)
} Else
{ #--> Si l'on ne trouve aucun compte du même nom sur le domaine, un compte est crée.
#No account was found on domain with name of $NewNameMach. Device is being joined and an account created for it
#--> Enlève l'ancien admin local.
#Use WMI to unjoin local computer from any domain or workgroup it might be previously associated with
$WMIComp.UnjoinDomainOrWorkgroup(($LocalCred.GetNetworkCredential()).Password,$LocalCred.UserName,0)
#--> Renomme le poste dans la variable $NewNameMach
#Rename the computer using the computer name stored in $NewNameMach
#$WMIComp.Rename($MACHINE, $Cred.GetNetworkCredential().Password, $Cred.Username)
#--> Crée le compte et le place dans l'OU correspondante.
#Use WMI to join local computer to $Domain with $NewNameMach and place into $OU using the password and user name from $Cred
$WMIComp.JoinDomainOrWorkGroup(\"$Domain\",($Cred.GetNetworkCredential()).Password,$Cred.UserName,$OU,0x1+0x2+0x20+0x400)
}
[/code:1]
Je l'ai récupérer d'un script sur Internet et remis a jour avec mes variables.
Oui il y a beaucoup de commentaires
Lors de l'éxécution de FindOne().Path il m'affiche une erreur
[code:1]Le serveur n'est pas opérationnel[/code:1]
Or je suis bien dans le domaine mais quand j’exécute mon script je crois qu'il me change le nom du domaine (NANTES) en un workgroup du même nom car il n'arrive pas a joindre le domaine, j'ai l'erreur 1355 ou l'erreur système 5.
Pour éviter ce problème j'ai un autre script qui met automatiquement la session actuelle dans le domaine Nantes.
Quand je reboot après l'éxécution du script l'utilisateur ne veut pas se connecter, il me dit que le mot de passe ou le nom user est incorrect
quelqu'un aurait il un moyen d'éviter ce(s) problème(s) ?
Merci d'avance de prendre le temps de lire mon post un peu long
<br><br>Message édité par: michmich, à: 9/02/17 11:50
En ce moment je travaille sur un script que l'on m'a donné a faire, le but étant de récupérer les informations d'un utilisateur sur un fichier texte, pour ensuite créer un nouvel utilisateur avec ses informations sur un domaine dans lequel je ne suis pas. Je dois donc créer un utilisateur local dans un domaine puis rebooter le poste et me connecter directement sur sa session après le redémarrage.
J'effectue donc une recherche du poste dans l'annuaire LDAP, mais c'est a ce point la que ça bloque.J'ai tenté de travaillé avec la méthode FindOne().Path
j'ai ce bout de script :
[code:1]
#--> renseigne les informations de la machine
#Get instance of local computer ComputerSystem WMI Class
$WMIComp = Get-WmiObject -Class Win32_ComputerSystem
#--> va créer une recherche du poste dans le LDAP
#Create a DirectoryEntry object to configure the domain information for the DirectorySearcher
#$SearchBase = Read-Host \"Input the top level OU structure being searched for computer accounts.`r`nExample: `\"OU=Office Computers,OU=Building1,DC=Server,DC=Company,DC=Local`\"\"
$SearchBase = \"ou=Computers,dc=vif,dc=fr\"
$DomainInfo = New-Object System.DirectoryServices.DirectoryEntry('LDAP://$DC:389/$SearchBase',$($Cred.UserName),$($Cred.GetNetworkCredential().Password))
#-->créer une recherche du poste sur l'active directory
#Create a DirectorySearcher object to search Active Directory
$Searcher = New-Object System.DirectoryServices.DirectorySearcher($DomainInfo,'(&(objectCategory=computer)(objectClass=computer)(cn=$NewNameMach))','Path')
#Create search instance with filter and searchroot configured
$CompPath = $Searcher.FindOne().Path
#-->MISE EN PLACE DU POSTE SUR LE DOMAINE
#======================================================
write-host \"`n Mise en place dans le domaine `n\" -foregroundcolor \"Green\"
if ($CompPath -ne $null) {
#--> créer une recherche de l'ordinateur depuis l'annuaire
#Create DirectoryEntry object of computer object returned from search
$ADComputer = New-Object -TypeName System.DirectoryServices.DirectoryEntry($CompPath,$($Cred.UserName),$($Cred.GetNetworkCredential().Password))
#--> propriétés de l'objet ordinateur
#Get 'userAccountControl' property from computer object
$ComputerUAC = $ADComputer.InvokeGet('userAccountControl')
#-->Vérifier que le poste est bien désactivé
#Query 'userAccountControl' property to see if it equals 4098(disabled), if not set it to 4098
If ($ComputerUAC -ne '4098')
{
$ADComputer.InvokeSet('userAccountControl','4098')
}
#--> Valider les modifications
#Commit changes made to Active Directory
$ADComputer.CommitChanges()
#--> Enlève l'ancien compte admin local .
#Use WMI to unjoin local computer from any domain or workgroup it might be previously associated with
$WMIComp.UnjoinDomainOrWorkgroup(($LocalCred.GetNetworkCredential()).Password,$LocalCred.UserName,0)
#--> assigne l'OU et le lecteur réseau à la nouvelle machine
#Use WMI to join local computer to $Domain with $NewNameMach and place into $OU using the password and user name from $Cred
$WMIComp.JoinDomainOrWorkGroup(\"$Domain\",($Cred.GetNetworkCredential()).Password,$Cred.UserName,$OU,0x1+0x20+0x400)
} Else
{ #--> Si l'on ne trouve aucun compte du même nom sur le domaine, un compte est crée.
#No account was found on domain with name of $NewNameMach. Device is being joined and an account created for it
#--> Enlève l'ancien admin local.
#Use WMI to unjoin local computer from any domain or workgroup it might be previously associated with
$WMIComp.UnjoinDomainOrWorkgroup(($LocalCred.GetNetworkCredential()).Password,$LocalCred.UserName,0)
#--> Renomme le poste dans la variable $NewNameMach
#Rename the computer using the computer name stored in $NewNameMach
#$WMIComp.Rename($MACHINE, $Cred.GetNetworkCredential().Password, $Cred.Username)
#--> Crée le compte et le place dans l'OU correspondante.
#Use WMI to join local computer to $Domain with $NewNameMach and place into $OU using the password and user name from $Cred
$WMIComp.JoinDomainOrWorkGroup(\"$Domain\",($Cred.GetNetworkCredential()).Password,$Cred.UserName,$OU,0x1+0x2+0x20+0x400)
}
[/code:1]
Je l'ai récupérer d'un script sur Internet et remis a jour avec mes variables.
Oui il y a beaucoup de commentaires
Lors de l'éxécution de FindOne().Path il m'affiche une erreur
[code:1]Le serveur n'est pas opérationnel[/code:1]
Or je suis bien dans le domaine mais quand j’exécute mon script je crois qu'il me change le nom du domaine (NANTES) en un workgroup du même nom car il n'arrive pas a joindre le domaine, j'ai l'erreur 1355 ou l'erreur système 5.
Pour éviter ce problème j'ai un autre script qui met automatiquement la session actuelle dans le domaine Nantes.
Quand je reboot après l'éxécution du script l'utilisateur ne veut pas se connecter, il me dit que le mot de passe ou le nom user est incorrect
quelqu'un aurait il un moyen d'éviter ce(s) problème(s) ?
Merci d'avance de prendre le temps de lire mon post un peu long
Connexion ou Créer un compte pour participer à la conversation.
- Brice
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 9 ans 1 mois #23148
par Brice
Réponse de Brice sur le sujet Re:Problème d'intégration au domaine
La solution a mon problème est que le réseau se réinitialise pour prendre en compte les changements lors de la connexion a la session. Je dois donc attendre que le réseau soit correctement mis en place, après 1 min ou 2 l'utilisateur se connecte normalement 
Il faut jouer avec les paramètres des clés de registre pour ça :
[code:1]
$RegPath = \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"
#Attente du réseau (environ 100 secondes, soit 1 min 40)
Set-ItemProperty $RegPath \"DWORD SyncForegroundPolicy\" -Value \"1\" -type String
Set-ItemProperty $RegPath \"GpNetworkStartTimeoutPolicyValue\" -Value \"100\" -type String[/code:1]<br><br>Message édité par: michmich, à: 9/02/17 11:53
Il faut jouer avec les paramètres des clés de registre pour ça :
[code:1]
$RegPath = \"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"
#Attente du réseau (environ 100 secondes, soit 1 min 40)
Set-ItemProperty $RegPath \"DWORD SyncForegroundPolicy\" -Value \"1\" -type String
Set-ItemProperty $RegPath \"GpNetworkStartTimeoutPolicyValue\" -Value \"100\" -type String[/code:1]<br><br>Message édité par: michmich, à: 9/02/17 11:53
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.038 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Problème d'intégration au domaine RESOLU