2013
02.01

Voici une astuce pour ajouter une liste d’utilisateurs au groupe Administrator Local sur le serveur.
Ce script en PowerShell est une combinaison de plusieurs recherches sur le net.
L’exécution se fait en 3 temps :
– il récupère la liste des utilisateurs à ajouter dans un fichier
– il récupère la liste des utilisateurs membre du groupe Administrators sur le serveur
– si le user dans le fichier ne fait pas partie du groupe Administrators, il l’ajoute

function Get-Members($computername,$groupname){
    $computer = [ADSI]("WinNT://$computername,computer")
    $group=$computer.psbase.children.find($groupname)
    $group.psbase.invoke("Members") |
        ForEach-Object{
            $_.GetType().InvokeMember("Name", ‘GetProperty’, $null, $_, $null)
        }
}
function Add-GroupMember( $computername, $groupname, $ntaccount){
    write-host "Ajout de l’utilisateur $ntaccount au groupe AdminLocal"
    $computer=[ADSI]("WinNT://$computername,computer")
    $group=$computer.psbase.children.find($groupname)
    $Group.Add("WinNT://$ntaccount")
}
#On crée un fichier contenant la liste des utilisateurs membre du group Administrators
Get-Members $env:computername ‘Administrators’>liste_user_admin.txt
#On récupère la liste des utilisateurs à ajouter au groupe adminLocal
$data = Get-Content "D:\Scripts\liste_user_add_admin.txt"
forEach ($ligne in $data){
        #Si l’utilisateur est deja membre du groupe adminLocal
        if(Select-String $ligne liste_user_admin.txt)
        {
        write-host "L’utilisateur $ligne est deja dans groupe Administrators"  
        }
        else
        {
        #Sinon on l’ajoute au groupe Administrators
        Add-GroupMember $env:computername ‘Administrators’ $ligne       
        }
}
 

Pour appeler le script, c’est pas compliqué.

PS D:\scripts> powershell.exe .\add_user.ps1
L'utilisateur 8443691 est deja dans groupe AdminLocal
Ajout de l'utilisateur 8421325 au groupe AdminLocal
Ajout de l'utilisateur 7828439 au groupe AdminLocal
PS D:\scripts>

Attention toutefois, il faut que le shell soit lancé en Admin !
Sinon vous avez de belles erreurs de script !

PS D:\scripts> powershell.exe .\add_user.ps1
L'utilisateur titi est deja dans groupe AdminLocal
Ajout de l'utilisateur toto au groupe AdminLocal
Exception calling "Add" with "1" argument(s): "Access is denied.
"
At D:\scripts\add_user.ps1:23 char:15
+ $Group.Add <<<< ("WinNT://$ntaccount") + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Aucun commentaire.

Ajoutez votre commentaire

%d blogueurs aiment cette page :