Automatisation de l’ Ajout\Suppression des comptes locaux – Script Powershell

Bonjour,

pour des besoins métier, nous avons du élaborer un script powershell nous permettant le maintien à jour des comptes locaux de plusieurs serveurs.
ce script est poussé toutes les 30min par un agent puppet installé sur nos centaines de serveur.

Ses fonctions:

– Création d’un groupe qui sera membre du groupe administrateur
– Ajout de compte et ajout au groupe précédemment créée.
– Suppression automatique de compte en cas de départ de la société
– Suppression automatique de compte si l’ajout n’a pas été fait via le fichier CSV
– N’empêche pas l’utilisateur déjà présent de changer de mot de passe.

Le script utilise un fichier csv pour récupérer la liste à jour des utilisateurs.


# Déclaration groupe admin local
$group = "Administrateurs"
$group2 = "Administrators"
$group3 = "Admins-Astreinte"

# Création du groupe Admins-Astreinte
net localgroup $group3 /add /comment:"Groupe Administrateurs Astreinte - ne pas ajouter manuellement d'utilisateur risque fort de suppression automatique via Puppet"

# Ajout du groupe Admins-Astreinte au groupe administrateur\administrator peut importe la langue installée.

net localgroup $group /add $group3
net localgroup $group2 /add $group3

# déclaration date
$date = (get-date).ToString("dd-MM-yyyy")

# récupération du nom du serveur
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"

# récupération du contenu de la liste à jour des utilisateurs
$userfile = get-content "C:\Liste-a-jours.csv"

# récupération liste utilisateur actuellement présent dans le groupe
$Astreintemembers = NET LOCALGROUP $group3

# pour tous les membres actuels du groupe Admins-Astreinte
foreach ($user in $Astreintemembers){
if (!$user){}
else{
# S'il est également présent dans le fichier CSV alors on ne fait rien, sinon il est supprimé
if ($userfile | select-string -pattern $user){
}
else {
NET USER $User /delete
# J'incrémente également un fichier afin de pouvoir historiser les suppressions si besoin de comprendre ce qui s'est passé.
$del = (-join ($user," - ",$date))
$del >> c:\Suppression-groupe-Astreinte.txt
}}}

# On s'occupe ensuite des nouveaux arrivants
foreach ($user in $userfile){
# On vérifie si l'utilisateur existe localement
$existing = $adsi.Children | where {$_.SchemaClassName -eq 'user' -and $_.Name -eq $user}
# Si inexistant alors création du mot de passe et création du compte
if ($existing -eq $null) {
$year="2018"
$Pass = (-join ("*!",$env:COMPUTERNAME,$user,$year,"*!"))
$SecurePassword = $Pass | ConvertTo-SecureString -AsPlainText -Force

    Write-Host "Creation d'un nouvel utilisateur."
    & NET USER $user $SecurePassword /add /y /FULLNAME:$user /comment:"Utilisateur Astreinte"
    WMIC USERACCOUNT $user SET PasswordExpires=FALSE

    Write-Host "Ajout du compte $user au groupe $group3."
    & NET LOCALGROUP $group3 $user /add
   
        }
else {}
}

En espérant que ce petit script ou en tout cas une partie de celui ci puisse vous aider\aiguiller lors d’un besoin similaire!

Maxime

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Créez un site Web ou un blog gratuitement sur WordPress.com.

Retour en haut ↑

Technopreneurph

Technology Entrepreneurship For the World

Chemist Blogger

All things science, technology, and geek culture

Cambly Blog

Practice English with a Native Speaker

BirdsBeep is a Multiplatform Chat Application

BirdsBeep is the uprising of new chatting features that will satisfy.

Deepak verma

Get Latest updates from Famous Tech Blogs in One Blog.

Le mur d'Adrien

De l'administration système pour tous

%d blogueurs aiment cette page :