IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Script création Homedir pour les users actif dans un AD [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2014
    Messages : 9
    Par défaut Script création Homedir pour les users actif dans un AD
    Bonjour à tous,

    J'aimerai créé un répertoire scan perso pour chaque utilisateur valide dans mon AD (les utilisateurs désactivés sont dans une autre OU). Le but étant de faire comme pour un homedir, mais là ce sont pour les scans.

    J'avais trouvé un script sur le net et modifier pour mon environnement mais je me prends un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SET-ADUser : Droits d’accès insuffisants pour effectuer cette opération
    Au caractère C:\Users\administrateur.KRUSTASLV\Documents\Script Create Scans User.ps1:5 : 1
    + SET-ADUser $_.Samaccountname –HomeDrive "H" –HomeDirectory "\\SRVFIC01\Scans\$($ ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (mailarch:ADUser) [Set-ADUser], ADException
        + FullyQualifiedErrorId : Droits d’accès insuffisants pour effectuer cette opération,Microsoft.ActiveDirectory.Management.Commands.SetADUser
    Voici le script en question :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Get-ADUser -Filter "*" -SearchBase "OU=test,DC=test,DC=local" | 
    ForEach-Object{
    $SAM = $_.Samaccountname
    set-aduser $_.samaccountname -HomeDrive "H" -“HomeDirectory "\\srvfic01\Scans\$($_.samaccountname)" -server test.local | 
    }

    Pourtant j'exécute le script avec un compte admin du domaine, et j'ai bien les droits niveau du répertoire.

    Merci de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Salut,

    Droits d’accès insuffisants pour effectuer cette opération,Microsoft.ActiveDirectory.Management.Commands.SetADUser
    Tu as lancé la console "en tant qu'Administrateur" ? Tout bête mais parfois...surtout avec l'AD, ça semble bien conseillé.
    ++

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2014
    Messages : 9
    Par défaut
    Merci de ton aide, effectivement, ça m'a bien aidé, mais pas du tout avec le script de départ.
    En fait, je réexplique ce que je voulais faire.
    Le but avec le script était de créer un répertoire personnel dans un répertoire Scans pour y déposer les documents. Comme j'allais pas tout me taper à la main (des fois je suis un peu flemmard), et je voulais seulement créer des répertoires pour les utilisateurs actifs qui se trouvent dans une OU bien précise.

    Et voilà le script :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Get-ADUser -Filter "*" -SearchBase "OU=test,DC=test,DC=local" | 
    ForEach-Object{
    $SAM = $_.Samaccountname
    New-item -Path "\\srvfic01\dfsroot\Scans\$($_.samaccountname)" -ItemType directory
    }

    Donc il me récupère bien mes users pour créer les répertoires. Il y a peut être plus propre, plus efficient, mais ça marche. Que demande le peuple.
    Je vais pouvoir automatiser la tâche à faire 1 fois par jour, comme ça, j'ai plus besoin de créer à la mano, et idem pour le Homedir.

    [edit] Par contre il gère pas les droits.


  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2014
    Messages : 9
    Par défaut
    Script permettant d'attribuer le droit utilisateur pour le Scandir Personnel :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # Configurable Variables
    $Right = "Modify"
    $domain = "test.local"
    $searchbase = "OU=test, DC=test,DC=local"
    $HomeDirPath = "\\srvfic01\dfsroot\Scans"
    $logpath = "C:\log.txt"
     
    # Automatic Variable to get ad user list
    $adusers = Get-ADUser -Searchbase $searchbase -Filter * | select samaccountname
     
    # Performing loop
    foreach ($account in $adusers)
    {
        $user = $account.samaccountname
        $principal = "$domain\$user"
        Write-Host -fore DarkYellow "Testing Home dir path for $user account"
        $pathtest = Test-Path $HomeDirPath\$user
        if ($pathtest -eq $true)
        {
            # Path is true, defining the right ACL to the right folder
            $path = "$HomeDirPath\$user"
            Write-Host -fore Green "Ok, path exists on $pathtest for $user"
            $rule = new-object System.Security.AccessControl.FileSystemAccessRule($Principal, $Right, "ContainerInherit,ObjectInherit", "none", "Allow")
            $acl = Get-Acl $path
            $acl.setaccessrule($rule)
            Set-Acl $path $acl
            $user = ""
            $printcipal = ""
            $pathtest = ""
        }
        else
        {
            # Path is false, logging to the log file
            Write-Host -Fore Red "Path for $user does not exist on destination path"
            Write-Output "$pathtest does not exist for $user" >> $logpath
     
        }
    }

    Et voilà

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Content que tu ais réussi ton objectif !

    Petit conseil, lorsque tu as plein de paramètres "fixes" comme tes variables du début dans le script, utilises plutôt les Hashes Tables:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $Right = "Modify"
    $domain = "test.local"
    $searchbase = "OU=test, DC=test,DC=local"
    $HomeDirPath = "\\srvfic01\dfsroot\Scans"
    $logpath = "C:\log.txt"

    Se transforme en:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $Infos= @{
    Right ="Modify";
    domain ="test.local";
    searchbase = "OU=test, DC=test,DC=local";
    HomeDirPath = "\\srvfic01\dfsroot\Scans";
    logpath = "C:\log.txt"
    }

    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $infos
    
    Name                           Value
    ----                           -----
    searchbase                     OU=test, DC=test,DC=local
    Right                          Modify
    domain                         test.local
    logpath                        C:\log.txt
    HomeDirPath                    \\srvfic01\dfsroot\Scans
    et tu peux accéder à tes valeurs via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $infos.searchbase
    OU=test, DC=test,DC=local
    Enfin c'est une autre façon de faire, je trouve ça plus propre et dynamique mais c'est pas non plus indispensable

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/09/2009, 17h18
  2. Réponses: 5
    Dernier message: 09/10/2006, 17h29
  3. Même apparance de session pour les user et l'admin
    Par snoopy69 dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/09/2006, 17h15
  4. [IDENTIFICATION][TOMCAT]transparence pour les users
    Par olivier_44 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 31/08/2006, 13h49
  5. [Sécurité] Sécurité portable pour les données utilisées dans une requête
    Par berceker united dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/07/2006, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo