Question Fonction Get-DnOU
- Mickael Hornung
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 14 ans 3 semaines #6289
par Mickael Hornung
Fonction Get-DnOU a été créé par Mickael Hornung
Bonjour à tous,
Voici une fonction qui permet de récupérer le DistinguishedName d'une OU. Il est cependant possible de la modifier facilement pour qu'elle puisse récupérer le DN de tout autre Objet dans l'Active Directory
[code:1]################################################################################################
# Get-DnOU.ps1 #
#(Auteur: Mickaël Hornung) #
# #
# Fonction qui permet de récupérer le DN d'une OU passée en paramètre. #
# Exemple d'utilisation: #
# Get-DnOU Utilisateurs // Renvoie le Dn de l'OU Utilisateurs si elle existe. #
# Get-DnOU a* // Renvoie le DN de toute les OU commençant par a (insensible à la casse) #
# Dans le cas où la fonction renvoie plusieurs résultats, un message d'avertissment apparaît #
# car le but de cette fonction et de rechercher une OU en particulier, de récupérer son DN #
# pour s'y connecter. #
# ex: $connection_ou = [ADSI] \"LDAP://mon_dc.domain.local/$(Get-DnOU -name Utilisateurs)\" #
################################################################################################
Function Global:Get-DnOU
{
param(
[string]$name = \"*\",
[string]$scope = \"Subtree\",
[int] $method = 1
)
$root = New-Object System.DirectoryServices.DirectoryEntry(\"\"«»)
$ldapQuery = \"(&(objectCategory=organizationalunit)(name=$name))\"
$query = New-object system.directoryservices.directorysearcher
$query.searchRoot = $root
$query.Filter = $ldapquery
$query.SearchScope = $scope
if ($method -eq 1)
{
$list_object = $query.findall()
if ($list_object.count -gt 1 -and $name -ne '*')
{
Write-Host
Write-Host \"Attention ! $($list_object.count) OU se nomment $($name)\" -foregroundcolor red
}
}
if ($method -eq 2)
{
$list_object = $query.findone()
}
return $list_object | Foreach-Object {$_.properties.distinguishedname}
}[/code:1]
Voici une fonction qui permet de récupérer le DistinguishedName d'une OU. Il est cependant possible de la modifier facilement pour qu'elle puisse récupérer le DN de tout autre Objet dans l'Active Directory
[code:1]################################################################################################
# Get-DnOU.ps1 #
#(Auteur: Mickaël Hornung) #
# #
# Fonction qui permet de récupérer le DN d'une OU passée en paramètre. #
# Exemple d'utilisation: #
# Get-DnOU Utilisateurs // Renvoie le Dn de l'OU Utilisateurs si elle existe. #
# Get-DnOU a* // Renvoie le DN de toute les OU commençant par a (insensible à la casse) #
# Dans le cas où la fonction renvoie plusieurs résultats, un message d'avertissment apparaît #
# car le but de cette fonction et de rechercher une OU en particulier, de récupérer son DN #
# pour s'y connecter. #
# ex: $connection_ou = [ADSI] \"LDAP://mon_dc.domain.local/$(Get-DnOU -name Utilisateurs)\" #
################################################################################################
Function Global:Get-DnOU
{
param(
[string]$name = \"*\",
[string]$scope = \"Subtree\",
[int] $method = 1
)
$root = New-Object System.DirectoryServices.DirectoryEntry(\"\"«»)
$ldapQuery = \"(&(objectCategory=organizationalunit)(name=$name))\"
$query = New-object system.directoryservices.directorysearcher
$query.searchRoot = $root
$query.Filter = $ldapquery
$query.SearchScope = $scope
if ($method -eq 1)
{
$list_object = $query.findall()
if ($list_object.count -gt 1 -and $name -ne '*')
{
Write-Host
Write-Host \"Attention ! $($list_object.count) OU se nomment $($name)\" -foregroundcolor red
}
}
if ($method -eq 2)
{
$list_object = $query.findone()
}
return $list_object | Foreach-Object {$_.properties.distinguishedname}
}[/code:1]
La pièce jointe Get_DnOU.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 14 ans 3 semaines #6291
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fonction Get-DnOU
Salut,
j'ai deux remarques :
tu devrais utiliser un paramètre de type switch nommé All en lieu et place de [code:1][int] $method[/code:1]
Ainsi tu limites la mémorisation des noms de paramètres récurrents. De plus son usage correspond parfaitement à la méthode appelée.
La seconde concerne l'usage de la couleur rouge, pour un avertissement il est préférable d'utiliser Write-Warning (jaune). De cette manière tu restes cohérent avec les conventions implicites de l'équipe de dev de PowerShell.
Il faut éviter de voir rouge <br><br>Message édité par: Laurent Dardenne, à: 2/03/10 20:40
j'ai deux remarques :
tu devrais utiliser un paramètre de type switch nommé All en lieu et place de [code:1][int] $method[/code:1]
Ainsi tu limites la mémorisation des noms de paramètres récurrents. De plus son usage correspond parfaitement à la méthode appelée.
La seconde concerne l'usage de la couleur rouge, pour un avertissement il est préférable d'utiliser Write-Warning (jaune). De cette manière tu restes cohérent avec les conventions implicites de l'équipe de dev de PowerShell.
Il faut éviter de voir rouge <br><br>Message édité par: Laurent Dardenne, à: 2/03/10 20:40
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Mickael Hornung
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 14 ans 3 semaines #6297
par Mickael Hornung
Réponse de Mickael Hornung sur le sujet Re:Fonction Get-DnOU
Salut Laurent,
Merci pour tes remarques!
Effectivement, le paramètre de type switch correspond mieux .
En ce qui concerne le Write-Warning je ne connaissait pas .
Je reposte le code modifié avec le fichier joint.
J'ai rajouté l'affichage de l'aide si le paramètre -help ou -h est indiqué. Si il y a d'autre remarque, ne pas hésiter .
[code:1]################################################################################################
# Get-DnOU.ps1 #
#(Auteur: Mickaël Hornung) #
# #
# Fonction qui permet de récupérer le DN d'une OU passée en paramètre. #
# Exemple d'utilisation: #
# Get-DnOU Utilisateurs // Renvoie le Dn de l'OU Utilisateurs si elle existe. #
# Get-DnOU a* // Renvoie le DN de toute les OU commençant par a (insensible à la casse) #
# Dans le cas où la fonction renvoie plusieurs résultats, un message d'avertissment apparaît #
# car le but de cette fonction et de rechercher une OU en particulier, de récupérer son DN #
# pour s'y connecter. #
# ex: $connection_ou = [ADSI] \"LDAP://mon_dc.domain.local/$(Get-DnOU -name Utilisateurs)\" #
################################################################################################
Function Global:Get-DnOU ([string]$name = \"*\", [string]$scope = \"Subtree\", [switch]$all, [switch]$a, [switch]$help, [switch]$h)
{
if ($help -or $h)
{
Write-Host `n
Write-Host \"Get-DnOU: retourne le DistinguishedName d'une unité d'organisation\"
Write-Host \"Usage: Get-DnOU <param>\"
Write-Host \"<param>:\"
Write-Host \" -name -Indiquer le nom exact d'une OU ou le début suivit du caractère `\"*`\"\"
Write-Host \" -all -Retourne toute les OU qui matchent le nom passé en paramètre.\"
Write-Host \" Si ce paramètre est ommis, la fonction s'arrête sur la première OU qui matche le nom.\"
Write-Host \" -help -Affiche l'aide\"
Write-Host `n
return
}
$root = New-Object System.DirectoryServices.DirectoryEntry(\"\"«»)
$ldapQuery = \"(&(objectCategory=organizationalunit)(name=$name))\"
$query = New-object system.directoryservices.directorysearcher
$query.searchRoot = $root
$query.Filter = $ldapquery
$query.SearchScope = $scope
if ($all -or $a)
{
$list_object = $query.findall()
if ($list_object.count -gt 1 -and $name -ne '*')
{
Write-Host `n
Write-Warning \"$($list_object.count) OU commençent par `\"$($name)`\"\"
}
}
else
{
$list_object = $query.findone()
}
return $list_object | Foreach-Object {$_.properties.distinguishedname}
}[/code:1]
Merci pour tes remarques!
Effectivement, le paramètre de type switch correspond mieux .
En ce qui concerne le Write-Warning je ne connaissait pas .
Je reposte le code modifié avec le fichier joint.
J'ai rajouté l'affichage de l'aide si le paramètre -help ou -h est indiqué. Si il y a d'autre remarque, ne pas hésiter .
[code:1]################################################################################################
# Get-DnOU.ps1 #
#(Auteur: Mickaël Hornung) #
# #
# Fonction qui permet de récupérer le DN d'une OU passée en paramètre. #
# Exemple d'utilisation: #
# Get-DnOU Utilisateurs // Renvoie le Dn de l'OU Utilisateurs si elle existe. #
# Get-DnOU a* // Renvoie le DN de toute les OU commençant par a (insensible à la casse) #
# Dans le cas où la fonction renvoie plusieurs résultats, un message d'avertissment apparaît #
# car le but de cette fonction et de rechercher une OU en particulier, de récupérer son DN #
# pour s'y connecter. #
# ex: $connection_ou = [ADSI] \"LDAP://mon_dc.domain.local/$(Get-DnOU -name Utilisateurs)\" #
################################################################################################
Function Global:Get-DnOU ([string]$name = \"*\", [string]$scope = \"Subtree\", [switch]$all, [switch]$a, [switch]$help, [switch]$h)
{
if ($help -or $h)
{
Write-Host `n
Write-Host \"Get-DnOU: retourne le DistinguishedName d'une unité d'organisation\"
Write-Host \"Usage: Get-DnOU <param>\"
Write-Host \"<param>:\"
Write-Host \" -name -Indiquer le nom exact d'une OU ou le début suivit du caractère `\"*`\"\"
Write-Host \" -all -Retourne toute les OU qui matchent le nom passé en paramètre.\"
Write-Host \" Si ce paramètre est ommis, la fonction s'arrête sur la première OU qui matche le nom.\"
Write-Host \" -help -Affiche l'aide\"
Write-Host `n
return
}
$root = New-Object System.DirectoryServices.DirectoryEntry(\"\"«»)
$ldapQuery = \"(&(objectCategory=organizationalunit)(name=$name))\"
$query = New-object system.directoryservices.directorysearcher
$query.searchRoot = $root
$query.Filter = $ldapquery
$query.SearchScope = $scope
if ($all -or $a)
{
$list_object = $query.findall()
if ($list_object.count -gt 1 -and $name -ne '*')
{
Write-Host `n
Write-Warning \"$($list_object.count) OU commençent par `\"$($name)`\"\"
}
}
else
{
$list_object = $query.findone()
}
return $list_object | Foreach-Object {$_.properties.distinguishedname}
}[/code:1]
La pièce jointe Get_DnOU-70504ba97890fdade942fc1728ad4c60.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.087 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- Fonction Get-DnOU