Question Listing des serveurs sur l'AD

Plus d'informations
il y a 13 ans 8 mois #12324 par FONTAINE Brunel
Bonjour,
Je souhaites réaliser un listing des serveurs présents dans mon AD.
Je souhaites afficher la liste avec le nom de chaque serveur, l'OS, le last logon, la description, le managed by et savoir si c'est un dc ou un rodc

Pour l'instant j'ai réussi à afficher la majeure partie de ces renseignements mais je buche sur le comment afficher si c'est un rodc ou un dc.

Voilà mon code comme il est en ce moment.
[code:1]
Import-Module ActiveDirectory
Set-Location \"c:\csvscript\\"
$adobj = Get-ADComputer -LDAPFilter '(&(objectCategory=computer)(OperatingSystem=*Server*))' -property *
$adobj | FT -Property Name,DistinguishedName,Description,OperatingSystem,LastLogonDate,ManagedBy,RODC/DC
$adobj | Select-Object Name,DistinguishedName,Description,OperatingSystem,LastLogonDate,ManagedBy,RODC/DC | out-gridview #Export-CSV script1.csv -NoTypeInformation -Encoding UTF8
[/code:1]
Je pense qu'il faudrait regarder du côté de get-ADDomainController, mais je sais pas comment m'y prendre pour réunir les renseignements des deux commandes.
Merci d'avance.<br><br>Message édité par: lenurb, à: 4/07/12 12:25

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

Plus d'informations
il y a 13 ans 8 mois #12385 par Matthew BETTON
Bonjour,

La Cmdlet Get-ADDomainController dispose d'un paramètre nommé '-Writable'. Si ce switch est spécifié, la Cmdlet ne renvoie que les DC qui ne sont pas en lecture seule, donc pas RODC.

Aussi, cette Cmdlet renvoie des objets qui disposent, entre autre, de la propriété 'isReadOnly' : cette propriété (booléen) est à 'True' s'il s'agit d'un RODC, 'False' si ce n'est pas le cas.

Un exemple d'utilisation :

[code:1]
Get-ADDomainController | Select-Object Name, @{Name=\&quot;DistinguishedName\&quot;;Expression={$_.ComputerObjectDN}}, `
@{Name=\&quot;Description\&quot;;Expression={Get-ADComputer $_.Name -Properties Description | ForEach-Object{$_.Description}}}, `
@{Name=\&quot;RODC/DC\&quot;;Expression={if($_.isreadonly){\&quot;RODC\&quot;} else{\&quot;DC\&quot;}}}
[/code:1]

Un exemple de résultat :

[code:1]
Name DistinguishedName Description RODC/DC
----


CATODC01 CN=CATODC01,OU=Domain Cont... Ma description DC
CATODC02 CN=CATODC02,OU=Domain Cont... Ma description RODC
[/code:1]

Je n'ai pas traité toutes les propriétés que tu souhaites récupérer : il s'agit d'une piste ;)

@ +

Matthew

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

Plus d'informations
il y a 13 ans 8 mois #12386 par Matthew BETTON
Bonjour,

La suite....

Une autre idée consiste à penser que TOUS les comptes d'ordinateur des DC et RODC se trouvent dans l'OU \&quot;Domain Controllers\&quot;.

Dans ce cas, nous pouvons passer par la Cmdlet 'Get-ADComputer' puis fixer l'étendue de recherche sur cette OU via le paramètre \&quot;-Searchbase\&quot;.

Nous pouvons ensuite utiliser la Cmdlet 'Get-ADDomainController' pour savoir s'il s'agit d'un DC ou d'un RODC :

[code:1]
$dcServers = Get-ADComputer -Filter * -SearchBase \&quot;OU=Domain Controllers,DC=Canada,DC=Ca\&quot; -Property * |
Select-Object Name,DistinguishedName,Description,OperatingSystem,LastLogonDate,ManagedBy, `
@{Name=\&quot;RODC/DC\&quot;;Expression={if((Get-ADDomainController $_.Name).isReadOnly){\&quot;RODC\&quot;} else{\&quot;DC\&quot;}}}
[/code:1]

Ensuite, nous pouvons utiliser le même principe pour tous les autres serveurs. Habituellement (en tout cas, je l'ai toujours constaté chez différents clients)
on place les comptes d'ordinateur des serveurs membres dans une arborescence d'OU spécifique (par localisation géographique, par service, par Rôle / Applicatif...).
Cela permet notamment de pouvoir appliquer des GPOs spécifiques sur des ensembles de serveurs, par famille.

Sinon, les comptes d'ordinateur sont situés par défaut dans le conteneur 'Computers'.

Dans ce cas, récupérons la liste des serveurs membres situés dans ce conteneur :

[code:1]
$membersServers = Get-ADComputer -LDAPFilter '(&amp;(objectCategory=computer)(OperatingSystem=*Server*))' -SearchBase \&quot;CN=Computers,DC=Canada,DC=Ca\&quot; -Property * |
Select-Object Name,DistinguishedName,Description,OperatingSystem,LastLogonDate,ManagedBy, `
@{Name=\&quot;RODC/DC\&quot;;Expression={\&quot;NA\&quot;}}
[/code:1]

Ici, on fixe la propriété \&quot;DC/RODC\&quot; à NA (Non Applicable), puisque nous savons qu'il ne s'agit pas de DC, que le conteneur \&quot;Computers\&quot; ou notre OU \&quot;serveurs\&quot; n'en contient pas.

Les 2 ensembles de serveurs ainsi récupérés peuvent être additionnés pour n'obtenir qu'une seule liste (les 2 listes de serveurs disposent des mêmes propriétés) :

[code:1]

$Servers = @()

$Servers += Get-ADComputer -Filter * -SearchBase \&quot;OU=Domain Controllers,DC=Canada,DC=Ca\&quot; -Property * |
Select-Object Name,DistinguishedName,Description,OperatingSystem,LastLogonDate,ManagedBy, `
@{Name=\&quot;RODC/DC\&quot;;Expression={if((Get-ADDomainController $_.Name).isReadOnly){\&quot;RODC\&quot;} else{\&quot;DC\&quot;}}}

$Servers += Get-ADComputer -LDAPFilter '(&amp;(objectCategory=computer)(OperatingSystem=*Server*))' `
-SearchBase \&quot;CN=Computers,DC=Canada,DC=Ca\&quot; -Property * |
Select-Object Name,DistinguishedName,Description,OperatingSystem,LastLogonDate,ManagedBy, `
@{Name=\&quot;RODC/DC\&quot;;Expression={\&quot;NA\&quot;}}

$Servers | Out-GridView

[/code:1]

@ +

Matthew<br><br>Message édité par: Matthew BETTON, à: 15/07/12 10:58

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

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