Résolu Création Utilisateur / Création Dossier Perso / Changement de propriétaire

Plus d'informations
il y a 2 ans 5 mois - il y a 2 ans 5 mois #31400 par R41L
Bonjour, 

Je me permets de solliciter votre aide concernant un problème que je rencontre sur un de mes scripts. J'ai bien entendu fait une recherche sur le forum pour trouver des infos mais je vous avoue avoir du mal à comprendre l'enchainement des commandes/variables. Aussi, j'ai préféré crée mon propre sujet et je m'excuse par avance si cela ne respecte pas les règles.

Ce script interactif permet de créer un utilisateur dans le domaine, en lui demandant d'abord son nom, son prénom et son mot de passe. Puis, le script crée le login et le communique à l'utilisateur. Enfin, le script crée un dossier en utilisant le login de l'utilisateur.

Mon principal problème est le suivant : lorsque mon script crée le dossier de l'utilisateur, le propriétaire de ce dossier est BUILTIN\Administrateurs (via Get-Acl). Je souhaiterai plutôt que le propriétaire de ce dossier soit l'utilisateur, via son login. Je n'ai aucune idée de comment faire ça en Powershell. J'ai essayé avec takeown ou icacls mais ça ne change pas le propriétaire. Du moins, je ne suis pas parvenu à utiliser la commande takeown /u pour obtenir le résultat espéré. Quelqu'un peut-il m'aider sur ce point svp ou me mettre sur la piste ? 

Mon problème secondaire : actuellement, si l'utilisateur entre un mot de passe qui ne respecte pas les conditions énoncées, le script fonctionne quand même. Simplement à la fin l'utilisateur n'est pas actif dans l'AD. J'aimerai forcer l'utilisateur à respecter les conditions énoncées pour qu'il puisse continuer l'exécution du script. Quelqu'un aurait-il une piste pour m'aider dans ce sens svp ? 

Mon problème facultatif : lorsque l'utilisateur saisi sont mot de passe, il est en clair. Est-il possible, sans ouvrir de fenêtre supplémentaire, cad directement dans la console, de sécuriser la saisie du mot de passe ? Si oui, pourriez-vous me donner une piste svp ? 

Ci-joint un copie de mon script. Je vous remercie par avance pour l'aide que vous pourrez m'apporter.

Bien à vous, R41L

# Script PowerShell pour créer un nouveau utilisateur
# Script interactif v.1 du 29/09/21 - Crée par #R41L 

#Informations générales
$date = Get-Date -Format "dd-MM-yyyy"
Echo "Le $date - Creation d'un nouveau utilisateur" 

#Demande le nom et le prénom de l'utilisateur a créer :
$nom = Read-Host "Entrer le NOM de l'utilisateur svp ?"
$prenom = Read-Host "Entrer le PRENOM de l'utilisateur svp ?" 

#Définition du login
$login = ($nom).Substring(0,1).ToLower() + "." + $prenom.ToLower() 

#Demande le mot de passe
Write-Verbose -Message "Le mot de passe doit respecter les conditions suivantes : 8 car. dont 1 maj. , 1 min. et  1 chiffre ou 1 car. non-alphabétique minimum." -Verbose
$mdp = Read-Host "Entrer le MOT DE PASSE de l'utilisateur svp ?" 

#Vérification du login pour éviter les doublons
Echo "Merci de patienter un instant."
if (Get-ADUser -Filter {SamAccountName -eq $login})
{   
Write-Warning "Cet utilisateur existe déjà. Merci de recommencer."   
.\ps_new_user.ps1
} 
else 
{   
#Création du compte utilisateur et d'un dossier partagé ou à défaut indication d'une erreur.
try       
{       
New-ADUser  -Name "$prenom $nom" -GivenName $prenom -Surname $nom -SamAccountName $login -UserPrincipalName $login@acme.org -AccountPassword (ConvertTo-SecureString -AsPlainText $mdp -Force) -PasswordNeverExpires $true -CannotChangePassword $True -Enabled $true       
Write-Verbose -Message "Le compte d'utilisateur $login est désormais actif. Notez le soigneusement" -Verbose       
}   
catch       
{       
$_ | Out-File -FilePath C:\Scripts\LOGS\EU-$login-$date.txt       
Write-Warning "Désolé. Une erreur est survenue lors de la création de votre compte utilisateur. Merci de réessayer."       
}   
try       
{       
New-Item -Path \\SRV01-FPS\PFichiers\Users -Name "$login" -ItemType Directory       
Write-Verbose -Message "Le dossier partagé $login est désormais disponible." -Verbose       
}   
catch       
{        $_ | Out-File -FilePath C:\Scripts\LOGS\ER-$login-$date.txt       
Write-Warning "Désolé. Une erreur est survenue lors de la création de votre répertoire utilisateur. Merci de contacter l'administrateur."       
}
}
Dernière édition: il y a 2 ans 5 mois par R41L. Raison: Résolu

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 5 mois #31409 par R41L
Holà !

Bon après avoir fait des recherches sur ce site pour préciser la bonne commande à utiliser, j'ai fini par trouver ailleurs comment faire pour mon problème principal.

Voici ce que j'ai ajouté à la partie en dessous de "New-Item -Path \\SRV01-FPS..."
$acl = Get-Acl \\SRV01-FPS\PFichiers\Users\$login
$object = New-Object System.Security.Principal.NTAccount("ACME.org\$login")
$acl.SetOwner($object)
$acl | Set-Acl \\SRV01-FPS\PFichiers\Users\$login

Ça change bien le propriétaire de mon dossier. Si vous avez des pistes pour mes autres problèmes, je suis preneur. Merci encore.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 5 mois #31414 par ericlm128
Mon problème secondaire
Est tu sur que le problème viens du mot de passe ca me parais étrange voir improbable ?
Je cherchais une cmdlet dans RSAT pour tester un mot de passe mais ça ne semble pas exister il faut vérifier à la main (c'est nul )
Voici un bon lien sur le sujet : www.checkyourlogs.net/active-directory-p...-powershell-mvphour/

Mon problème facultatif
Read-Host -Prompt "Question" -AsSecureString

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 5 mois - il y a 2 ans 5 mois #31423 par R41L
Bonjour Ericlm128,

Merci pour ton aide. Pour mon problème facultatif c'est ok :) 

Ensuite, effectivement tu as raison, même si l'utilisateur ne respecte pas les conditions du mot de passe, sont compte est quand même actif dans l'AD. J'ai du craquer. Mais du coup c'est dommage niveau sécurité. Aurais-tu une idée de comment faire pour obliger l'utilisateur à respecter les conditions du mot de passe ?

Je te remercie par avance pour toute nouvelle aide.

Bien à toi,
Dernière édition: il y a 2 ans 5 mois par R41L.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 5 mois #31424 par ericlm128
Malheureusement je n'ai pas d'AD avec les droits suffisant pour faire des tests.

Dans la doc de New-ADUser au paramètre AccountPassword il est dit (Google traduction)Les comptes d'utilisateurs, par défaut, sont créés sans mot de passe. Si vous fournissez un mot de passe, une tentative sera effectuée pour définir ce mot de passe, mais cela peut échouer en raison des restrictions de la politique de mot de passe. Le compte utilisateur sera toujours créé et vous pouvez utiliser Set-ADAccountPassword pour définir le mot de passe sur ce compte. Afin de garantir que les comptes restent sécurisés, les comptes d'utilisateurs ne seront jamais activés à moins qu'un mot de passe valide ne soit défini ou que PasswordNotRequired soit défini sur $True. Le compte est créé si le mot de passe échoue pour une raison quelconqueDonc cela décrit ce que tu nous explique.



Tu peux tenter d'implémenter le script que je t'ai transmit pour vérifier la complexité des mot de passe avant la création.
Et/ou tu peux aussi décider de supprimer les comptes si il est désactivé après sa création et remonter l'erreur.

Ps :
Tu peux définir un mot de passe via Set-ADAccountPassword
Tu peux l'activer avec : Enable-ADAccount

 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 5 mois #31427 par R41L

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.079 secondes
Propulsé par Kunena