Question Croiser données AD / Exchange

Plus d'informations
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

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

Plus d'informations
il y a 10 ans 3 mois #21446 par xyz
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.

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 3 mois #21447 par Philippe
Réponse de Philippe sur le sujet Re:Croiser données AD / Exchange

Merci pour l'explication sur la boucle Foreach, j'ai réussi à comprendre grâce à tes explications.

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 !

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.
Je me suis rendu compte que dans certain cas, mon script ne marchait pas.

merci pour Laurent
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

Voilà pour le code

ok donc ça marche !!

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

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