Question
GUI Affichage de données des users
- Hicham Madini
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 4 mois #28009
par Hicham Madini
GUI Affichage de données des users a été créé par Hicham Madini
Bonjour tout le monde,
j'ai besoin de votre aide.
Je me suis inspiré d'un script qui fonctionne trés bien sous AD. github.com/chair6/madness/blob/master/madness.ps1
Je voulais realiser la même chose mais sous un OpenLdap et je ne veux que récupérer les données.
J'ai adapté le script qui me trouve la liste des utilisateurs (par example en tapant \"a\" ou \"curie\"). Mais je n'arrive pas a afficher les données des utilisateurs dans les champs sous Account Details quand je les selectionne dans la listview.
[code:1]Set-PSDebug -Trace 2
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
####### ## Global Variables #######
# working hash table of users being operated against (lookup results are stored in this)
$script:workingUsers = @{}
# list of fields to be included in results table and in detail form for individual account
$script:fieldsTable = @(\"uid\", \"sn\", \"mail\"«»)
$script:fieldsDetail = @(\"uid\", \"cn\", \"sn\", \"mail\"«»)
# fieldsConfig is a hash of field names with an array of (numLines, scrollEnabled, textbox)
$script:fieldsConfig = [ordered]@{
\"uid\" = (1, $False, $Null);
\"cn\" = (1, $False, $Null);
\"sn\" = (1, $False, $Null);
\"mail\" = (1, $False, $Null)
}
# attribute mapping to field label, and boolean indicated inclusion in new user form
$script:attributesToFields = @{
\"uid\" = (\"uid\", $False);
\"cn\" = (\"cn\", $True);
\"sn\" = (\"sn\", $True);
\"mail\" = (\"mail\", $True);
}
$script:buttonWidth = 150
$script:buttonHeight = 23
$script:buttonBaseX = 620
#######
## Helper Functions
#######
function Get-Users ($query=\"\"«») {
If ($query.Trim() -eq \"\"«») {
return @{}
}
$query = \"*\" + $query + \"*\"
$LDAP_Query = New-Object System.DirectoryServices.DirectorySearcher($Root,\"(&(objectclass=*)(uid=$query))\"«»)
$results= $LDAP_Query.findall()
$users = @{}
ForEach ($result in $results) {
$user = @{}
ForEach ($attribute in $script:attributesToFields.Keys) {
If ($user.Keys -notContains $script:attributesToFields[$attribute][0]) {
$user.Add($script:attributesToFields[$attribute][0], $result.properties.$attribute)
}
}
$users.Add($result.properties.uid, $user)
}
return $users
}
function Do-AccountLookup ($strQuery) {
$script:workingUsers = Get-Users $strQuery
$objListView.Items.Clear()
$script:workingUsers.Keys | ForEach-Object {
$current_user = $_
$objListviewItem = New-Object System.Windows.Forms.ListViewItem($script:workingUsers.get_Item($current_user).get_Item($script:fieldsTable[0]))
ForEach ($field in $script:fieldsTable[1..($script:fieldsTable.Length - 1)]) {
$objListviewItem.SubItems.Add([string]$script:workingUsers.get_Item($current_user).get_Item($field)) | Out-Null
}
$objListview.Items.Add($objListviewItem) | Out-Null
}
}
#######
## GUI Event Handlers
#######
# handlers for static buttons
[System.EventHandler] $hndlrDoAccountLookup = {
$objListview.Items.Clear()
$Domaine = \"LDAP://ldap.forumsys.com:389/dc=example,dc=com\"
$Root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($Domaine,$null,$null,'FastBind')
$query = $txtQuery.Text
Do-AccountLookup($query)
}
######### GUI Helpers #######
function Get-CurrentUser () {
$currentUser = $Null
$currentIdx = $objListView.SelectedIndices[0]
if ($currentIdx -ne $Null) {
$currentUser = @{}
$currentuid = $objListView.SelectedItems[0].Text
$currentUser.Add(\"Index\", $currentIdx)
ForEach ($attr in $script:fieldsConfig.Keys) {
$currentUser.Add($attr, $script:workingUsers.$currentuid.$attr)
}
}
return $currentUser.properties.uid
}
Function Do-RenderUserDetail($currentUser=$Null) {
if ($currentUser -eq $Null) {
$currentUser = Get-CurrentUser
}
if ($currentUser -ne $Null) {
$uid = $currentUser.properties.uid
foreach ($key in $script:fieldsDetail) {
$script:fieldsConfig.Get_Item($key)[2].Text = $script:workingUsers.get_Item($uid).get_Item($key)
$script:fieldsConfig.Get_Item($key)[2].ReadOnly = $True
}
}
else {
foreach ($key in $script:fieldsDetail) {
$script:fieldsConfig.Get_Item($key)[2].Text = \"\"
}
}
}
function Sort-ListView {
# from etechgoodness.wordpress.com/2014/02/25/s...t-a-custom-comparer/
param([parameter(Position=0)][UInt32]$Column)
$Numeric = $true # determine how to sort
if($Script:LastColumnClicked -eq $Column){
$Script:LastColumnAscending = -not $Script:LastColumnAscending
}
else {
$Script:LastColumnAscending = $true
}
$Script:LastColumnClicked = $Column
$ListItems = @(@(@())) # three-dimensional array; column 1 indexes the other columns, column 2 is the value to be sorted on, and column 3 is the System.Windows.Forms.ListViewItem object
foreach($ListItem in $objListView.Items) {
# if all items are numeric, can use a numeric sort
if($Numeric -ne $false) {
try {
$Test = [Double]$ListItem.SubItems.Text[$Column]
} catch {
$Numeric = $false # a non-numeric item was found, so sort will occur as a string
}
}
$ListItems += ,@($ListItem.SubItems.Text[$Column], $ListItem)
}
$EvalExpression = {
if($Numeric)
{ return [Double]$_[0] }
else
{ return [String]$_[0] }
}
$ListItems = $ListItems | Sort-Object -Property @{Expression=$EvalExpression; Ascending=$Script:LastColumnAscending}
$objListView.BeginUpdate()
$objListView.Items.Clear()
foreach($ListItem in $ListItems) {
$objListView.Items.Add($ListItem[1])
}
$objListView.EndUpdate()
}
#######
## GUI Initialization
#######
$frmUI = New-Object System.Windows.Forms.Form
$frmUI.Text = \"User Account Managment\"
$frmUI.Size = New-Object System.Drawing.Size(800,600)
$frmUI.StartPosition = \"CenterScreen\"
$frmUI.KeyPreview = $True
$frmUI.MaximumSize = $frmUI.Size
$frmUI.MinimumSize = $frmUI.Size
# first row - lookup input / button
$lblQuery = New-Object System.Windows.Forms.Label
$lblQuery.Location = New-Object System.Drawing.Size(5,5)
$lblQuery.Size = New-Object System.Drawing.Size(140,20)
$lblQuery.Text = \"Username / Name:\"
$frmUI.Controls.Add($lblQuery)
$txtQuery = New-Object System.Windows.Forms.TextBox
$txtQuery.Location = New-Object System.Drawing.Size(145,5)
$txtQuery.Size = New-Object System.Drawing.Size(270,20)
$frmUI.Controls.Add($txtQuery)
$btnLookup = New-Object System.Windows.Forms.Button
$btnLookup.Location = New-Object System.Drawing.Size(($buttonBaseX - $buttonWidth - 40),5)
$btnLookup.Size = New-Object System.Drawing.Size($buttonWidth,$buttonHeight)
$btnLookup.Text = \"Lookup\"
$btnLookup.Add_Click($hndlrDoAccountLookup)
$frmUI.Controls.Add($btnLookup)
# second row - lookup results
$lblResult = New-Object System.Windows.Forms.Label
$lblResult.Location = New-Object System.Drawing.Size(5,45)
$lblResult.Size = New-Object System.Drawing.Size(400,15)
$lblResult.Text = \"Lookup Results\"
$frmUI.Controls.Add($lblResult)
$objListview = New-Object System.Windows.Forms.Listview
$objListview.Location = New-Object System.Drawing.Size(5,60)
$objListview.Size = New-Object System.Drawing.Size(780,140)
$objListview.Height = 140
$objListview.View = [System.Windows.Forms.View]::«»Details
$objListView.MultiSelect = $False
$objListView.FullRowSelect = $True
foreach ($field in $script:fieldsTable) {
$col = $objListview.Columns.Add($field)
$col.Width = 120
}
$objListView.add_ColumnClick({Sort-ListView $_.Column})
$frmUI.Controls.Add($objListview)
$objListview.Add_SelectedIndexChanged({Do-RenderUserDetail})
# third row - individual account details
$lblAccount = New-Object System.Windows.Forms.Label
$lblAccount.Location = New-Object System.Drawing.Size(5,210)
$lblAccount.Size = New-Object System.Drawing.Size(400,15)
$lblAccount.Text = \"Account Details\"
$frmUI.Controls.Add($lblAccount)
$details_baseheight = 230
$details_rowheight = 25
$details_rowwidth = 480
# build out the text fields to hold the account details
$i = 0
ForEach ($fieldName in $script:fieldsDetail) {
$lbl = New-Object System.Windows.Forms.Label
$lbl.Location = New-Object System.Drawing.Size(5, ($details_baseheight + ($details_rowheight*$i)))
$lbl.Size = New-Object System.Drawing.Size(100,$details_rowheight)
$lbl.Text = $fieldName + \":\"
$frmUI.Controls.Add($lbl)
$txt = New-Object System.Windows.Forms.TextBox
$txt.Location = New-Object System.Drawing.Size(105, ($details_baseheight + ($details_rowheight*$i)))
$rows = $script:fieldsConfig.Get_Item($fieldName)[0]
$scrollable = $script:fieldsConfig.Get_Item($fieldName)[1]
$txt.Size = New-Object System.Drawing.Size($details_rowwidth, (15*$rows))
$txt.ReadOnly = $True
if ($rows -gt 1) {
$txt.MultiLine = $True
}
if ($scrollable) {
$txt.ScrollBars = \"Vertical\"
}
$script:fieldsConfig.Get_Item($fieldName)[2] = $txt
$frmUI.Controls.Add($txt)
$i += 1
}
# misc gui stuff
$frmUI.Add_KeyDown({if ($_.KeyCode -eq \"Enter\"«») {$hndlrDoAccountLookup.Invoke($Null, [EventArgs]::Empty)}})
$frmUI.Add_KeyDown({if ($_.KeyCode -eq \"Escape\"«») {$frmUI.Close()}})
$frmUI.Add_Shown({$frmUI.Activate()})
[void] $frmUI.ShowDialog()[/code:1]
J'espere que j'ai pu expliquer mon probleme.
Merci beacoup pour votre aide!<br><br>Message édité par: hichammadd, à: 18/01/19 06:31
j'ai besoin de votre aide.
Je me suis inspiré d'un script qui fonctionne trés bien sous AD. github.com/chair6/madness/blob/master/madness.ps1
Je voulais realiser la même chose mais sous un OpenLdap et je ne veux que récupérer les données.
J'ai adapté le script qui me trouve la liste des utilisateurs (par example en tapant \"a\" ou \"curie\"). Mais je n'arrive pas a afficher les données des utilisateurs dans les champs sous Account Details quand je les selectionne dans la listview.
[code:1]Set-PSDebug -Trace 2
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
####### ## Global Variables #######
# working hash table of users being operated against (lookup results are stored in this)
$script:workingUsers = @{}
# list of fields to be included in results table and in detail form for individual account
$script:fieldsTable = @(\"uid\", \"sn\", \"mail\"«»)
$script:fieldsDetail = @(\"uid\", \"cn\", \"sn\", \"mail\"«»)
# fieldsConfig is a hash of field names with an array of (numLines, scrollEnabled, textbox)
$script:fieldsConfig = [ordered]@{
\"uid\" = (1, $False, $Null);
\"cn\" = (1, $False, $Null);
\"sn\" = (1, $False, $Null);
\"mail\" = (1, $False, $Null)
}
# attribute mapping to field label, and boolean indicated inclusion in new user form
$script:attributesToFields = @{
\"uid\" = (\"uid\", $False);
\"cn\" = (\"cn\", $True);
\"sn\" = (\"sn\", $True);
\"mail\" = (\"mail\", $True);
}
$script:buttonWidth = 150
$script:buttonHeight = 23
$script:buttonBaseX = 620
#######
## Helper Functions
#######
function Get-Users ($query=\"\"«») {
If ($query.Trim() -eq \"\"«») {
return @{}
}
$query = \"*\" + $query + \"*\"
$LDAP_Query = New-Object System.DirectoryServices.DirectorySearcher($Root,\"(&(objectclass=*)(uid=$query))\"«»)
$results= $LDAP_Query.findall()
$users = @{}
ForEach ($result in $results) {
$user = @{}
ForEach ($attribute in $script:attributesToFields.Keys) {
If ($user.Keys -notContains $script:attributesToFields[$attribute][0]) {
$user.Add($script:attributesToFields[$attribute][0], $result.properties.$attribute)
}
}
$users.Add($result.properties.uid, $user)
}
return $users
}
function Do-AccountLookup ($strQuery) {
$script:workingUsers = Get-Users $strQuery
$objListView.Items.Clear()
$script:workingUsers.Keys | ForEach-Object {
$current_user = $_
$objListviewItem = New-Object System.Windows.Forms.ListViewItem($script:workingUsers.get_Item($current_user).get_Item($script:fieldsTable[0]))
ForEach ($field in $script:fieldsTable[1..($script:fieldsTable.Length - 1)]) {
$objListviewItem.SubItems.Add([string]$script:workingUsers.get_Item($current_user).get_Item($field)) | Out-Null
}
$objListview.Items.Add($objListviewItem) | Out-Null
}
}
#######
## GUI Event Handlers
#######
# handlers for static buttons
[System.EventHandler] $hndlrDoAccountLookup = {
$objListview.Items.Clear()
$Domaine = \"LDAP://ldap.forumsys.com:389/dc=example,dc=com\"
$Root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($Domaine,$null,$null,'FastBind')
$query = $txtQuery.Text
Do-AccountLookup($query)
}
######### GUI Helpers #######
function Get-CurrentUser () {
$currentUser = $Null
$currentIdx = $objListView.SelectedIndices[0]
if ($currentIdx -ne $Null) {
$currentUser = @{}
$currentuid = $objListView.SelectedItems[0].Text
$currentUser.Add(\"Index\", $currentIdx)
ForEach ($attr in $script:fieldsConfig.Keys) {
$currentUser.Add($attr, $script:workingUsers.$currentuid.$attr)
}
}
return $currentUser.properties.uid
}
Function Do-RenderUserDetail($currentUser=$Null) {
if ($currentUser -eq $Null) {
$currentUser = Get-CurrentUser
}
if ($currentUser -ne $Null) {
$uid = $currentUser.properties.uid
foreach ($key in $script:fieldsDetail) {
$script:fieldsConfig.Get_Item($key)[2].Text = $script:workingUsers.get_Item($uid).get_Item($key)
$script:fieldsConfig.Get_Item($key)[2].ReadOnly = $True
}
}
else {
foreach ($key in $script:fieldsDetail) {
$script:fieldsConfig.Get_Item($key)[2].Text = \"\"
}
}
}
function Sort-ListView {
# from etechgoodness.wordpress.com/2014/02/25/s...t-a-custom-comparer/
param([parameter(Position=0)][UInt32]$Column)
$Numeric = $true # determine how to sort
if($Script:LastColumnClicked -eq $Column){
$Script:LastColumnAscending = -not $Script:LastColumnAscending
}
else {
$Script:LastColumnAscending = $true
}
$Script:LastColumnClicked = $Column
$ListItems = @(@(@())) # three-dimensional array; column 1 indexes the other columns, column 2 is the value to be sorted on, and column 3 is the System.Windows.Forms.ListViewItem object
foreach($ListItem in $objListView.Items) {
# if all items are numeric, can use a numeric sort
if($Numeric -ne $false) {
try {
$Test = [Double]$ListItem.SubItems.Text[$Column]
} catch {
$Numeric = $false # a non-numeric item was found, so sort will occur as a string
}
}
$ListItems += ,@($ListItem.SubItems.Text[$Column], $ListItem)
}
$EvalExpression = {
if($Numeric)
{ return [Double]$_[0] }
else
{ return [String]$_[0] }
}
$ListItems = $ListItems | Sort-Object -Property @{Expression=$EvalExpression; Ascending=$Script:LastColumnAscending}
$objListView.BeginUpdate()
$objListView.Items.Clear()
foreach($ListItem in $ListItems) {
$objListView.Items.Add($ListItem[1])
}
$objListView.EndUpdate()
}
#######
## GUI Initialization
#######
$frmUI = New-Object System.Windows.Forms.Form
$frmUI.Text = \"User Account Managment\"
$frmUI.Size = New-Object System.Drawing.Size(800,600)
$frmUI.StartPosition = \"CenterScreen\"
$frmUI.KeyPreview = $True
$frmUI.MaximumSize = $frmUI.Size
$frmUI.MinimumSize = $frmUI.Size
# first row - lookup input / button
$lblQuery = New-Object System.Windows.Forms.Label
$lblQuery.Location = New-Object System.Drawing.Size(5,5)
$lblQuery.Size = New-Object System.Drawing.Size(140,20)
$lblQuery.Text = \"Username / Name:\"
$frmUI.Controls.Add($lblQuery)
$txtQuery = New-Object System.Windows.Forms.TextBox
$txtQuery.Location = New-Object System.Drawing.Size(145,5)
$txtQuery.Size = New-Object System.Drawing.Size(270,20)
$frmUI.Controls.Add($txtQuery)
$btnLookup = New-Object System.Windows.Forms.Button
$btnLookup.Location = New-Object System.Drawing.Size(($buttonBaseX - $buttonWidth - 40),5)
$btnLookup.Size = New-Object System.Drawing.Size($buttonWidth,$buttonHeight)
$btnLookup.Text = \"Lookup\"
$btnLookup.Add_Click($hndlrDoAccountLookup)
$frmUI.Controls.Add($btnLookup)
# second row - lookup results
$lblResult = New-Object System.Windows.Forms.Label
$lblResult.Location = New-Object System.Drawing.Size(5,45)
$lblResult.Size = New-Object System.Drawing.Size(400,15)
$lblResult.Text = \"Lookup Results\"
$frmUI.Controls.Add($lblResult)
$objListview = New-Object System.Windows.Forms.Listview
$objListview.Location = New-Object System.Drawing.Size(5,60)
$objListview.Size = New-Object System.Drawing.Size(780,140)
$objListview.Height = 140
$objListview.View = [System.Windows.Forms.View]::«»Details
$objListView.MultiSelect = $False
$objListView.FullRowSelect = $True
foreach ($field in $script:fieldsTable) {
$col = $objListview.Columns.Add($field)
$col.Width = 120
}
$objListView.add_ColumnClick({Sort-ListView $_.Column})
$frmUI.Controls.Add($objListview)
$objListview.Add_SelectedIndexChanged({Do-RenderUserDetail})
# third row - individual account details
$lblAccount = New-Object System.Windows.Forms.Label
$lblAccount.Location = New-Object System.Drawing.Size(5,210)
$lblAccount.Size = New-Object System.Drawing.Size(400,15)
$lblAccount.Text = \"Account Details\"
$frmUI.Controls.Add($lblAccount)
$details_baseheight = 230
$details_rowheight = 25
$details_rowwidth = 480
# build out the text fields to hold the account details
$i = 0
ForEach ($fieldName in $script:fieldsDetail) {
$lbl = New-Object System.Windows.Forms.Label
$lbl.Location = New-Object System.Drawing.Size(5, ($details_baseheight + ($details_rowheight*$i)))
$lbl.Size = New-Object System.Drawing.Size(100,$details_rowheight)
$lbl.Text = $fieldName + \":\"
$frmUI.Controls.Add($lbl)
$txt = New-Object System.Windows.Forms.TextBox
$txt.Location = New-Object System.Drawing.Size(105, ($details_baseheight + ($details_rowheight*$i)))
$rows = $script:fieldsConfig.Get_Item($fieldName)[0]
$scrollable = $script:fieldsConfig.Get_Item($fieldName)[1]
$txt.Size = New-Object System.Drawing.Size($details_rowwidth, (15*$rows))
$txt.ReadOnly = $True
if ($rows -gt 1) {
$txt.MultiLine = $True
}
if ($scrollable) {
$txt.ScrollBars = \"Vertical\"
}
$script:fieldsConfig.Get_Item($fieldName)[2] = $txt
$frmUI.Controls.Add($txt)
$i += 1
}
# misc gui stuff
$frmUI.Add_KeyDown({if ($_.KeyCode -eq \"Enter\"«») {$hndlrDoAccountLookup.Invoke($Null, [EventArgs]::Empty)}})
$frmUI.Add_KeyDown({if ($_.KeyCode -eq \"Escape\"«») {$frmUI.Close()}})
$frmUI.Add_Shown({$frmUI.Activate()})
[void] $frmUI.ShowDialog()[/code:1]
J'espere que j'ai pu expliquer mon probleme.
Merci beacoup pour votre aide!<br><br>Message édité par: hichammadd, à: 18/01/19 06:31
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 4 mois #28031
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:GUI Affichage de données des users
salut,
comment faire pour deplacer mon sujet chez \"Entraide pour les initiés\"?
Merci d'avance
comment faire pour deplacer mon sujet chez \"Entraide pour les initiés\"?
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 4 mois #28032
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:GUI Affichage de données des users
salut,
je veux bien deplacer mon sujet chez les intiés afin de trouver une solution à mon probleme!
merci d'avance!
je veux bien deplacer mon sujet chez les intiés afin de trouver une solution à mon probleme!
merci d'avance!
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 4 mois #28033
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:GUI Affichage de données des users
dois-je fermer ce sujet et ouvrire un nouveau chez les inités?
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 7 ans 4 mois #28037
par Philippe
Réponse de Philippe sur le sujet Re:GUI Affichage de données des users
salut hichammadd
pas besoin de déplacer ton post
mais comme je vois que tu la bien remanier et je suis curieux je vais jeter un oeil
j'ai trouver que le problème ce trouver dans la variable $workingUsers ou plus exactement la lecture de cette variable pour remplir la variable $currentuser dans fonction Get-CurrentUser
j'ai fais plusieurs test et comparaison avec le script d'origine sans trouver la solution
je vais continuer dans l'après midi si j'ai du temps
pas besoin de déplacer ton post
en général on n'aime pas travailler sur de grand script qui n'a pas été développer par utilisateur qui l'utilise (toi) car tu ne connais pas trop le fonctionnement du script et donc on ne peut pas t'interroger sur le fonctionnement du scriptMais je n'arrive pas a afficher les données des utilisateurs dans les champs sous Account Details
mais comme je vois que tu la bien remanier et je suis curieux je vais jeter un oeil
j'ai trouver que le problème ce trouver dans la variable $workingUsers ou plus exactement la lecture de cette variable pour remplir la variable $currentuser dans fonction Get-CurrentUser
j'ai fais plusieurs test et comparaison avec le script d'origine sans trouver la solution
je vais continuer dans l'après midi si j'ai du temps
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 4 mois #28039
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:GUI Affichage de données des users
Merci beaucoup 6ratgus pour ton aide!
moi je veux bien que ce script fonctionne car j'en ai besoin! donc tu peux bien m'interroger sur le fonctionnement du script puisque je l'utilise pour AD (Active Directory).
Oui effectivement le problème ce trouve dans la lecture de cette variable $workingUsers et les fonctions Get-CurrentUser et Do-RenderUserDetail.
Pour info: la seule difference, c'est que le script initial ce base sur le DN (DistinguishedName) qu'on peut récupérer facilement sous AD. Sous Openldap non, on ne peut récupérer que le adspath. C'et pourquoi je me suis basé sur le uid dans la fonction Get-Users
[code:1]$Domaine = \"LDAP://ldap.forumsys.com:389/dc=example,dc=com\"
$Root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($Domaine,$null,$null,'FastBind')
$LDAP_Query = New-Object System.DirectoryServices.DirectorySearcher($Root,\"(&(objectclass=*)(uid=pasteur))\"«»)
$results= $LDAP_Query.findall()
$results.Properties [/code:1]
Name =============> Value
----
adspath ==========> {LDAP://ldap.forumsys.com:389/uid=pasteur,dc=example,dc=com}
uid ==============> {pasteur}
objectclass ======> {inetOrgPerson, organizationalPerson, person, top}
cn ===============> {Louis Pasteur}
sn ===============> {Pasteur}
mail =============> {Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.}
telephonenumber ==> {602-214-4978}
Pour récupérer le DN (en fait le format du DN)
[code:1]$Domaine = \"LDAP://ldap.forumsys.com:389/dc=example,dc=com\"
$Root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($Domaine,$null,$null,'FastBind')
$LDAP_Query = New-Object System.DirectoryServices.DirectorySearcher($Root,\"(&(objectclass=*)(uid=pasteur))\"«»)
$results= $LDAP_Query.findall()
$results.Properties.adspath -replace \"LDAP://ldap.forumsys.com:389/\", \"\"[/code:1]
uid=pasteur,dc=example,dc=com
Message édité par: hichammadd, à: 22/01/19 12:37
Message édité par: hichammadd, à: 22/01/19 12:45
Message édité par: hichammadd, à: 22/01/19 12:51
Message édité par: hichammadd, à: 22/01/19 12:54<br><br>Message édité par: hichammadd, à: 22/01/19 12:55
moi je veux bien que ce script fonctionne car j'en ai besoin! donc tu peux bien m'interroger sur le fonctionnement du script puisque je l'utilise pour AD (Active Directory).
Oui effectivement le problème ce trouve dans la lecture de cette variable $workingUsers et les fonctions Get-CurrentUser et Do-RenderUserDetail.
Pour info: la seule difference, c'est que le script initial ce base sur le DN (DistinguishedName) qu'on peut récupérer facilement sous AD. Sous Openldap non, on ne peut récupérer que le adspath. C'et pourquoi je me suis basé sur le uid dans la fonction Get-Users
[code:1]$Domaine = \"LDAP://ldap.forumsys.com:389/dc=example,dc=com\"
$Root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($Domaine,$null,$null,'FastBind')
$LDAP_Query = New-Object System.DirectoryServices.DirectorySearcher($Root,\"(&(objectclass=*)(uid=pasteur))\"«»)
$results= $LDAP_Query.findall()
$results.Properties [/code:1]
Name =============> Value
----
adspath ==========> {LDAP://ldap.forumsys.com:389/uid=pasteur,dc=example,dc=com}
uid ==============> {pasteur}
objectclass ======> {inetOrgPerson, organizationalPerson, person, top}
cn ===============> {Louis Pasteur}
sn ===============> {Pasteur}
mail =============> {Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.}
telephonenumber ==> {602-214-4978}
Pour récupérer le DN (en fait le format du DN)
[code:1]$Domaine = \"LDAP://ldap.forumsys.com:389/dc=example,dc=com\"
$Root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($Domaine,$null,$null,'FastBind')
$LDAP_Query = New-Object System.DirectoryServices.DirectorySearcher($Root,\"(&(objectclass=*)(uid=pasteur))\"«»)
$results= $LDAP_Query.findall()
$results.Properties.adspath -replace \"LDAP://ldap.forumsys.com:389/\", \"\"[/code:1]
uid=pasteur,dc=example,dc=com
Message édité par: hichammadd, à: 22/01/19 12:37
Message édité par: hichammadd, à: 22/01/19 12:45
Message édité par: hichammadd, à: 22/01/19 12:51
Message édité par: hichammadd, à: 22/01/19 12:54<br><br>Message édité par: hichammadd, à: 22/01/19 12:55
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.053 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- GUI Affichage de données des users