Question
Croiser données AD / Exchange
- Marco_FR
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 10 ans 3 mois #21445
par Marco_FR
Réponse de Marco_FR sur le sujet Re:Croiser données AD / Exchange
Bonjour 6ratgus,
Merci pour l'explication sur la boucle Foreach, j'ai réussi à comprendre grâce à tes explications.
Grâce Laurent, j'ai créé des objets avec les propriétés que je souhaitais.
Et c'était exactement comme ça que je voulais que ça sorte.
Merci encore pour votre aide
Voilà pour le code
[code:1]$USERS = @(Import-Csv -Delimiter \";\" \"inactifs_user-201509.csv\" -Encoding UTF8) # Import du fichier des comptes inactifs
$Date = (get-date).AddMonths(-4) # Date d'inactivité
$delimeter = \";\"
$UserInfoExchange = \" \"
$UserInfoAD = \" \"
# Traitement
$UserInfo = foreach ( $USER in $USERS ) {
$InfoUser = @(Get-ADUser -Identity $USER.SAMAccountName -Properties WhenCreated, LastLogonDate, Title, Description, GivenName, Surname, Displayname | select WhenCreated, LastLogonDate, Title, Description, GivenName, Surname, SamAccountName, Displayname, DistinguishedName)
# Utiliser pour la requete exchange
$DistinguishedName = $InfoUser.DistinguishedName
# Creation des attributs AD
$UserAd = New-Object PSObject -property @{WhenCreated=$InfoUser.WhenCreated;LastLogonDate=$InfoUser.LastLogonDate;Title=$InfoUser.Title;Description=$InfoUser.Description;GivenName=$InfoUser.GivenName;Surname=$InfoUser.Surname;SamAccountName=$InfoUser.SamAccountName}
# Verifie que le compte soit actif ou non
if ( ($userad.WhenCreated -lt $Date -and $UserAd.LastLogonDate -lt $Date) -or ($UserAd.LastLogonDate -lt $Date) ) {
$InfoExchange = @(get-mailbox -identity $DistinguishedName | get-mailboxStatistics | select DisplayName, LastLogonTime, LastLoggedOnUserAccount | where { $_.LastLogonTime -lt $date } )
# Creation des attributs Exchange
$UserExchange = New-Object PSObject -Property @{DisplayName=$InfoExchange.Displayname;LastLogonTime=$InfoExchange.LastLogonTime;LastLoggedOnUserAccount=$InfoExchange.LastLoggedOnUserAccount}
# Concatenation des deux elements
$UserInfoAdExc = New-Object PSObject -Property @{WhenCreated=$UserAd.WhenCreated;LastLogonDate=$UserAd.LastLogonDate;Title=$UserAd.Title;Description=$UserAd.Description;GivenName=$UserAd.GivenName;Surname=$UserAd.Surname;SamAccountName=$UserAd.SamAccountName;DisplayName=$UserExchange.DisplayName;LastLogonTime=$UserExchange.LastLogonTime;LastLoggedOnUserAccount=$UserExchange.LastLoggedOnUserAccount}
$UserInfoAdExc
}
else {
$UserAd
}
}
$UserInfo | ft -AutoSize[/code:1]<br><br>Message édité par: Marco_Po, à: 29/01/16 10:12
Merci pour l'explication sur la boucle Foreach, j'ai réussi à comprendre grâce à tes explications.
Grâce Laurent, j'ai créé des objets avec les propriétés que je souhaitais.
Et c'était exactement comme ça que je voulais que ça sorte.
Merci encore pour votre aide
Voilà pour le code
[code:1]$USERS = @(Import-Csv -Delimiter \";\" \"inactifs_user-201509.csv\" -Encoding UTF8) # Import du fichier des comptes inactifs
$Date = (get-date).AddMonths(-4) # Date d'inactivité
$delimeter = \";\"
$UserInfoExchange = \" \"
$UserInfoAD = \" \"
# Traitement
$UserInfo = foreach ( $USER in $USERS ) {
$InfoUser = @(Get-ADUser -Identity $USER.SAMAccountName -Properties WhenCreated, LastLogonDate, Title, Description, GivenName, Surname, Displayname | select WhenCreated, LastLogonDate, Title, Description, GivenName, Surname, SamAccountName, Displayname, DistinguishedName)
# Utiliser pour la requete exchange
$DistinguishedName = $InfoUser.DistinguishedName
# Creation des attributs AD
$UserAd = New-Object PSObject -property @{WhenCreated=$InfoUser.WhenCreated;LastLogonDate=$InfoUser.LastLogonDate;Title=$InfoUser.Title;Description=$InfoUser.Description;GivenName=$InfoUser.GivenName;Surname=$InfoUser.Surname;SamAccountName=$InfoUser.SamAccountName}
# Verifie que le compte soit actif ou non
if ( ($userad.WhenCreated -lt $Date -and $UserAd.LastLogonDate -lt $Date) -or ($UserAd.LastLogonDate -lt $Date) ) {
$InfoExchange = @(get-mailbox -identity $DistinguishedName | get-mailboxStatistics | select DisplayName, LastLogonTime, LastLoggedOnUserAccount | where { $_.LastLogonTime -lt $date } )
# Creation des attributs Exchange
$UserExchange = New-Object PSObject -Property @{DisplayName=$InfoExchange.Displayname;LastLogonTime=$InfoExchange.LastLogonTime;LastLoggedOnUserAccount=$InfoExchange.LastLoggedOnUserAccount}
# Concatenation des deux elements
$UserInfoAdExc = New-Object PSObject -Property @{WhenCreated=$UserAd.WhenCreated;LastLogonDate=$UserAd.LastLogonDate;Title=$UserAd.Title;Description=$UserAd.Description;GivenName=$UserAd.GivenName;Surname=$UserAd.Surname;SamAccountName=$UserAd.SamAccountName;DisplayName=$UserExchange.DisplayName;LastLogonTime=$UserExchange.LastLogonTime;LastLoggedOnUserAccount=$UserExchange.LastLoggedOnUserAccount}
$UserInfoAdExc
}
else {
$UserAd
}
}
$UserInfo | ft -AutoSize[/code:1]<br><br>Message édité par: Marco_Po, à: 29/01/16 10:12
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 3 mois #21446
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Croiser données AD / Exchange
Une remarque en passant :
[code:1]
$InfoExchange = @(
get-mailbox -identity $DistinguishedName |
get-mailboxStatistics |
select DisplayName, LastLogonTime, LastLoggedOnUserAccount |
where { $_.LastLogonTime -lt $date } )
}
[/code:1]
Tu peux inverser le Select et le Where, pas besoin de créer un objet inutilement.
[code:1]
$InfoExchange = @(
get-mailbox -identity $DistinguishedName |
get-mailboxStatistics |
select DisplayName, LastLogonTime, LastLoggedOnUserAccount |
where { $_.LastLogonTime -lt $date } )
}
[/code:1]
Tu peux inverser le Select et le Where, pas besoin de créer un objet inutilement.
Tutoriels PowerShell
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 10 ans 3 mois #21447
par Philippe
il arrive que les donné ne sont pas toutes toujours présentes ou au bon format voir avec des caractères spéciaux !! a voir
Réponse de Philippe sur le sujet Re:Croiser données AD / Exchange
de rien, mais je n'ai donné que des exemples sans explication. je suis parti sur l'hypothèse que tu savais ce qu'est une boucle et que tu n'avais qu'un problème de syntaxe !Merci pour l'explication sur la boucle Foreach, j'ai réussi à comprendre grâce à tes explications.
merci pour LaurentGrâce à Laurent, j'ai créé des objets avec les propriétés que je souhaitais
Et c'était exactement comme ça que je voulais que ça sorte.
Je me suis rendu compte que dans certain cas, mon script ne marchait pas.
il arrive que les donné ne sont pas toutes toujours présentes ou au bon format voir avec des caractères spéciaux !! a voir
ok donc ça marche !!Voilà pour le code
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Croiser données AD / Exchange