Archive

Archives pour la catégorie ‘Active Directory’

Identifier les détenteurs des rôles FSMO

active-directory

Depuis la version 2000, Active Directory s’appuit sur les rôles FSMO (Flexible Single Master Operation).
Les 5 rôles FSMO sont les suivants:
Schema Master – un par forêt
Domain naming Master – un par forêt
RID Master – un pour chaque domaine
PDC Emulator – un pour chaque domaine
Infrastructure Master – un pour chaque domaine

Pour déterminer quels serveurs hébergent un ou plusieurs rôles, vous pouvez utiliser les méthodes suivantes:

Par la MMC
Schema Master:
Il faut au préalable enregistrer le composant DLL schmmgmt avec la commande

regsvr32 schmmgmt.dll

Il suffit ensuite d’ouvrir la MMC et d’ajouter le snap-in « Schéma Active Directory »
Rendez-vous dans « Maître d’opérations » pour identifier le détenteur de ce rôle.

Domain naming master:
Ouvrir la MMC « Domaines et Approbations Active Directory »
Rendez-vous dans « Maître d’opérations » pour identifier le détenteur de ce rôle.

RID Master, PDC Emulator et Infrastructure Master:
Ouvrir la MMC « Utilisateurs et Ordinateurs Active Directory »
Rendez-vous dans « Maître d’opérations » pour identifier les détenteurs de ces rôles.

L’avantage de la la MMC est que vous pouvez facilement déplacer les rôles par l’interface graphique.
Exécutez pour cela, cette méthode sur le contrôleur de domaine vers lequel vous voulez transférer les rôles.

Par la commande Ntdsutil
depuis un contôleur de domaine, lancer dans un fenêtre CMD la commande ntdsutil.

C:\>ntdsutil
ntdsutil: roles
fsmo maintenance: connections
server connections: connect to server localhost
Liaison à localhost...
Connecté à localhost en utilisant les informations d'identification d'un utilisateur connecté localement
server connections: q
fsmo maintenance: select operation target
select operation target: list roles for connected server
Le serveur "localhost" est informé de 5 rôles
Schéma - CN=NTDS Settings,CN=SRV0001,CN=Servers,CN=Paris,CN=Sites,CN=Configuration,DC=domain,DC=com
Domaine - CN=NTDS Settings,CN=SRV0001,CN=Servers,CN=Paris,CN=Sites,CN=Configuration,DC=domain,DC=com
PDC - CN=NTDS Settings,CN=SRV0001,CN=Servers,CN=Paris,CN=Sites,CN=Configuration,DC=domain,DC=com
RID - CN=NTDS Settings,CN=SRV0001,CN=Servers,CN=Paris,CN=Sites,CN=Configuration,DC=domain,DC=com
Infrastructure - CN=NTDS Settings,CN=SRV0001,CN=Servers,CN=Paris,CN=Sites,CN=Configuration,DC=domain,DC=com
select operation target:
Categories: Active Directory Tags: ,

Configuration des profils itinérants sur Windows 2008

La procédure suivante détail comment configurer les profils itinérants dans Windows 2008.

Configuration de la GPO
Si vous souhaiter en tant d’administrateur accèder au contenu des dossiers des profils itinérant, il est necessaire de configurer un GPO qui devra s’appliquer aux ordinateurs avec le paramètre suivant:
– « Configuration ordinateurs/Stratégies/Modèles d’administration/Système/Profil des utilisateurs/Ajouter le groupe de sécurité administrateur aux profils itinérants utilisateurs » Activé

GPO-Profils_Itinérants

Configuration du dossier partagé
Pour héberger tous les dossiers de profils sur le serveur, il est nécessaire de configurer un dossier partagé.
Attention, ce dossier peut contenir beaucoup de données selon le nombre et le mode d’utilisation des utilisateurs. Pensez à rediriger les dossier « Mes Documents » si vous souhaiter limiter la taille de ce dossier ou mettre en place une gestion de quotas.
Créez ce dossier et partagé de la façon suivante:
Configurez le groupe « Tout le monde » en « Contrôle total »

Dossier-Profils_Itinérants

Dans l’onglet Sécurité, configurez les groupe « Users » du serveur ou du domaine selon que vous êtes sur serveur membre ou un contrôleur du domaine avec le droit « Modifier ». Les autres droits restent par défaut.

NTFS_Profils_Itinérants

Configuration des utilisateurs
Configurez le profile des utilisateurs pour pointer vers un dossier personnel du dossier partagé précédemment.
Exemple: \\server01.domain.local\profils$\%username%

User_Profils_Itinérants

Si l’utilisateur utilise un PC Windows XP, le dossier créé sera nommée login (Ex:p.touvabien). Si l’utilisateur utilise un PC Windows Seven le dossier sera nommé login.v2 (Ex: p.touvabien.v2)
Dans le cas ou l’utilisateur utilise plusieurs PC de type différents (XP/Seven), les deux types de dossiers seront créés. La gestion des profils étant différente entre XP et Seven étant différente, elle ne peut pas être compatible.
Pour contourner ce problème de compatibilité, il est conseiller d’utiliser la redirection de dossiers par GPO.

Il ne reste plus aux utilisateurs qu’à s’authentifier sur le domaine pour que les dossiers de profils se crées.

Créer 1000 comptes de test

Pour faire des tests sur une maquette, il est parfois nécessaire de créer beaucoup de comptes.
Il est possible de créer des comptes Test1, Test2, Test3… Test58.

Efficace mais par très fun. Il manque un peu d’accents ou de caractères spéciaux.
Je vous propose une liste de 1000 acteurs et actrices du cinéma français et international.

cinema

A télécharger ici.

Vous pourrez importer ce fichier dans votre Active Directory avec ce script.

?View Code POWERSHELL
Import-Csv -Path .\cinema.txt | foreach {
$firstname = (Get-Culture).TextInfo.Tolower($_.givenname) 
$firstname = (Get-Culture).TextInfo.ToTitleCase($firstname) 
$lastname = (Get-Culture).TextInfo.ToUpper($_.surname) 
$name = $lastname + ' ' + $firstname 
$logname = $lastname.replace("-","") 
$name 
if ($logname.Length -le 6) { 
$samaccount = $firstname.Remove(1) + "." + $logname 
} 
Else { 
$samaccount = $firstname.Remove(1) + "." + $logname.Remove(6) 
} 
$upn = $samaccount + "@labnan.local" 
$AccountPassword = (ConvertTo-SecureString "P@ssW0rd" -AsPlainText -force)   
New-ADUser -Name $name -GivenName $firstname -Surname $lastname -Path "OU=Comptes,DC=labnan,DC=local" -SamAccountName $samaccount -UserPrincipalName $upn -AccountPassword $AccountPassword -Enabled $true -ChangePasswordAtLogon $true 
}

Garder le contrôle du temps dans Active Directory

Dans un domaine Active Directory le contrôleur de domaine hébergeant le rôle PDC est la référence de temps. C’est lui qui est en charge de se mettre à l’heure depuis une référence de temps externe via le protocole NTP et de fournir l’heure pour tous les membres du domaine.
Les autres contrôleurs de domaine viennent se mettre à l’heure sur le PDC via le protocole NT5DS.
Les serveurs et ordinateurs membres du domaine se mettent à l’heure depuis les contrôleurs de domaine via le protocole NT5DS.
La mise à l’heure est effectuée par le service w32time sur l’ensemble des systèmes d’exploitation Microsoft.

W32tm

Par défaut le service de temps des serveurs et ordinateurs du domaine est configuré de type NT5DS. Il n’y a donc que le PDC à configurer pour récupérer l’heure en NTP sur une source externe.
Pour rappel, le service de temps utilise le port UDP 123. Il faut donc configurer votre firewall en conséquence.

Si nécessaire, il est possible de figer cette configuration par GPO. Vous serez alors certains que les membres du domaine sont à l’heure.

Voici tout d’abord comment configurer par GPO le service w32time du PDC pour utiliser NTP.

1- Créer une GPO « Mise à l’heure du PDC »
2- Créer un filtre WMI pour sélectionner le PDC.
Le filtre est Select * from Win32_ComputerSystem where DomainRole = 5
Ce filtre assure que seul le PDC est affecté par cette GPO même si celui-ci est remplacé ou le rôle déplacé sur un autre contrôleur.

WMI-Filter-conf

WMI-Filter

 

Il est possible de faire la configuration à la main, mais la GPO va permettre que garantir que la configuration ne bouge pas.

3- Appliquer le filtre WMI sur la GPO.

4- Configurer le service de temps dans la GPO.

« Système/Service de temps Windows/Fournisseurs de temps »
Ne changer que NtpServer et Type.

GPO-NTP

5- Appliquer la GPO sur l’OU « Contrôleurs de domaine ».

 

Voici maintenant comment configurer par GPO le service w32time sur les membres et contrôleurs du domaine en NT5DS.

1- Créer une GPO « Mise à l’heure du domaine ».
2- Configurer le service de temps dans la GPO.
« Système/Service de temps Windows/Fournisseurs de temps »
Il suffit d’activer la GPO sans changer la configuration.
GPO-NT5DS
5- Appliquer la GPO à la racine du domaine.

 

Vous garantissez ainsi que l’ensemble de votre domaine est à l’heure.

Créer une arborescente d’unités d’organisation (OU)

Vous souhaitez créer une arborescence d’unités d’organisations pour chacun des vos 53 sites géographiques. Cette arborescence d’OU sera identique pour chaque sites.
La quantité d’OU à créer vous impressionne. Voici comment gagner quelques heures.

OU

?View Code POWERSHELL
 
$OUFilName = Read-Host "Entrez l'OU parent"
$OUSiteName = Read-Host "Entrez le nom de la nouvelle OU"
$Domain = [ADSI]"LDAP://AD-DC-01/dc=domain,dc=local"
 
#Creation de l'OU de site.
$OUSite = $Domain.Create("OrganizationalUnit", "ou=" + $OUSiteName + ",ou=" + $OUFilName)
$OUSite.SetInfo()
Write-Host "L'OU $OUSiteName a été créée."
 
#Creation du premier niveau d'OU.
$OUFirst = "Ordinateurs","Groupes","Utilisateurs"
Foreach ( $ou in $OUFirst) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=" + $OUSiteName + ",ou=" + $OUFilName)
$SetOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}
 
#Creation des OU d'ordinateurs
$OUComp = "Portables","Fixes"
Foreach ( $ou in $OUComp) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=Ordinateurs,ou=" + $OUSiteName + ",ou=" + $OUFilName)
$setOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}
 
#Creation des OU d'utilisateurs.
$OUUsr = "Standards","Citrix","Administrateurs"
Foreach ( $ou in $OUUsr) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=Utilisateurs,ou=" + $OUSiteName + ",ou=" + $OUFilName)
$setOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}

Importation DNS avec PowerShell

« Gagner du temps », c’est souvent l’objectif qui nous pousse à utiliser PowerShell. Voici donc comment importer des modifications dans un DNS avec PowerShell.
Ce script contient les commandes pour supprimer des enregistrements et en ajouter. Pour les mises à jour vous devrez passer par la suppression et l’ajout.
Il est possible de modifier le type d’enregistrement pour traiter par exemple des Alias.

?View Code POWERSHELL
$DNSServer = "AD-DC-01" 
$DNSZone = "domain.local" 
$InputFile = "./import-file.txt"
 
$records = Import-CSV $InputFile
 
ForEach ($record in $records) { 
    $recordName = $record.name 
    $recordType = "A" 
    $recordAddress = $record.ip
    $action = $record.action
 
    if ( $action -eq "DELETE") {
        $cmdDelete = "dnscmd $DNSServer /RecordDelete $DNSZone $recordName $recordType /f" 
        Write-Host "Running the following command: $cmdDelete" 
        Invoke-Expression $cmdDelete 
}
    ElseIf ( $action -eq "ADD") {
        $cmdAdd = "dnscmd $DNSServer /RecordAdd $DNSZone $recordName $recordType $recordAddress" 
        Write-Host "Running the following command: $cmdAdd" 
        Invoke-Expression $cmdAdd 
}
}

Ce script va vous permettre de faire l’importation en masse d’enregistrements mais aussi de planifier des modifications dans le DNS.

Contrôler l’heure locale de tous les ordinateurs d’une OU

Voici un script PowerShell qui retourne l’heure locale de tous les ordinateurs présents dans une OU de l’Active Directory.
Il contrôle préalablement si l’ordinateur ou serveur répond à un ping.

?View Code POWERSHELL
$ping = new-object System.Net.NetworkInformation.Ping
$servers = Get-ADComputer -SearchBase "OU=Serveurs,DC=domain,DC=local" -filter *
Foreach ($server in $servers){
$servername = $server.name
$reply = $ping.send($servername)
if ($reply.status –eq “Success”)
{
$rtime = $null
$rtime = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $servername -ErrorAction SilentlyContinue
if ($rtime -ne $null) {
$time = $rtime.ConvertToDateTime($rtime.LocalDateTime)
Write-Host $servername" : "$time
}}
Else{
Write-Host "Server $servername not responding"
}
}

Il y a quelques seconds entre le premier et le dernier en fonction du nombre d’ordinateurs et du délais d’exécution.

Categories: Active Directory Tags: , ,

Lister les liens de sites Active Directory avec Powershell

Voici comment lister les liens de sites Active Directory et les sites qu’ils lient avec PowerShell.

?View Code POWERSHELL
$site_links = get-adobject -filter 'objectclass -eq "sitelink"' -SearchBase 'cn=configuration,dc=domain,dc=local' -properties sitelist
$site_links | fl Name,sitelist

Lister les sites Active Directory avec PowerShell

Dans un domaine Active Directory important avec beaucoup de sites Active Directory, de contrôleurs de domaine et de sous-réseaux, il peut être fastidieux de passer par la MMC « Sites et Services Active Directory » pour contrôler la configuration.
Voici comment afficher avec PowerShell la liste des sites avec leurs contrôleurs de domaine et les sous-réseaux associés.

?View Code POWERSHELL
$forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$sites = $forest.Sites
$sites | ft Name,Servers,Subnets –AutoSize

Vous pourrez visualiser rapidement si des sites sont sans contrôleurs ou sans sous-réseaux.

Connaitre la durée du Tombstone Lifetime

Voici la commande PowerShell pour connaitre la valeur du Tombstone Lifetime de votre domaine Active Directory.
Cette valeur correspond à la durée de vie des objets supprimés dans le domaine.
Si un contrôleur de domaine ne réplique pas depuis le nombre de jours du Tombstone LifeTime, il ne sera plus possible pour lui de répliquer avec les autres contrôleurs.

?View Code POWERSHELL
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,D
C=local" -properties tombstonelifetime