I wrote this script but I’m having problems adding the strings of each loop to the $ActiveSyncReport psobject. I get the error that is the bottom. I want to build up the $ActiveSyncReport Array from the data collected in each For-Each loop and append to a csv file so I can pass a report to someone. I’m running this on an Exchange 2010 server so I’m limited to Powershell 2 functions
$OU="OU=Staff,OU=Users,OU=Here,DC=There,DC=Back,DC=Again"
Add-PSSnapinMicrosoft.Exchange.Management.PowerShell.E2010
Import-ModuleActiveDirectory
$ActiveSyncReport=new-objectpsobject
$Users=get-aduser-filter {SamAccountName -like"*"} -searchbase$OU-properties*
$users|ForEach-Object{
$StaffPerson=$_.SamAccountName
$mail=Get-Mailbox-Identity$StaffPerson|Select-Object-expandpropertyPrimarySmtpAddress
$userdisplayname=Get-ActiveSyncDevice-mailbox$StaffPerson| Select-Object-expandpropertyuserdisplayname
$devicetype=Get-ActiveSyncDevice-mailbox$StaffPerson|Select-Object-expandpropertydevicetype
$deviceos=Get-ActiveSyncDevice-mailbox$StaffPerson|Select-Object-expandpropertydeviceos
$deviceuseragent=Get-ActiveSyncDevice-mailbox$StaffPerson|Select-Object-expandpropertydeviceuseragent
$DeviceTelephoneNumber=Get-ActiveSyncDevice-mailbox$StaffPerson|Select-Object-expandpropertyDeviceTelephoneNumber
$DeviceModel=Get-ActiveSyncDeviceStatistics-Mailbox$_.SamAccountName |Select-Object-expandpropertyDeviceModel
$LastSyncAttemptTime=Get-ActiveSyncDeviceStatistics-Mailbox$_.SamAccountName |Select-Object-expandpropertyLastSyncAttemptTime
$LastSuccessSync=Get-ActiveSyncDeviceStatistics-Mailbox$_.SamAccountName |Select-Object-expandpropertyLastSuccessSync
#This is just to see what the strings are as expected
Write-Host$StaffPerson
Write-Host$mail
Write-Host$userdisplayname
Write-Host$devicetype
Write-Host$deviceos
Write-Host$deviceuseragent
Write-Host$DeviceTelephoneNumber
Write-Host$DeviceModel
Write-Host$LastSyncAttemptTime
Write-Host$LastSuccessSync
#I’m only running the first line here to cut down on all the error messages
$ActiveSyncReport|add-membernoteproperty-nameDisplayName$userdisplayname
#$ActiveSyncReport | add-member noteproperty mail $mail
#$ActiveSyncReport | add-member noteproperty DeviceModel $DeviceModel
#$ActiveSyncReport | add-member noteproperty devicetype $devicetype
#$ActiveSyncReport | add-member noteproperty deviceos $deviceos
#$ActiveSyncReport | add-member noteproperty deviceuseragent $deviceuseragent
#$ActiveSyncReport | add-member noteproperty LAstSyncAttemptTime $LAstSyncAttemptTime
#$ActiveSyncReport | add-member noteproperty LastSuccessSync $LastSuccessSync
#$ActiveSyncReport | add-member noteproperty DeviceTelephoneNumber $DeviceTelephoneNumber
#Outputs the CSV file
#$ActiveSyncReport| Export-csv 'C:\PurgeUserRecords\From HR\ActiveSyncReport.csv' -append
}
Add-Member : Cannot add a member with the name "DisplayName" because a member with tha
t name already exists. If you want to overwrite the member anyway, use the Force param
eter to overwrite it.
At C:\scripts\ActiveSyncReport.ps1:32 char:31
+ $ActiveSyncReport | add-member <<<< noteproperty -name DisplayName $userdisplayname
+ CategoryInfo : InvalidOperation: (@{DisplayName=}:PSObject) [Add-Membe
r], InvalidOperationException
+ FullyQualifiedErrorId : MemberAlreadyExists,Microsoft.PowerShell.Commands.AddMe
mberCommand