# Rename and edit datapath below # Random password generator Function random-password ($length = 8) { $punc = 46..46 $digits = 48..57 $letters = 65..90 + 97..122 # Thanks to # https://blogs.technet.com/b/heyscriptingguy/archive/2012/01/07/use-pow $password = get-random -count $length ` -input ($punc + $digits + $letters) | % -begin { $aa = $null } ` -process {$aa += [char]$_} ` -end {$aa} return $password } #Export User data from o365 $DataPath = "C:\path\o365UserData.csv" $Results = @() $MailboxUsers = get-mailbox -resultsize unlimited foreach($user in $mailboxusers) { $UPN = $user.userprincipalname $username = $user.name $MOL = Get-MsolUser -userprincipalname $UPN | Select-Object City, Country, Department, DisplayName, Fax, FirstName, LastName, MobilePhone, Office, PasswordNeverExpires, PhoneNumber, PostalCode,SignInName, State, StreetAddress, Title $EmailAddress = Get-Mailbox -ResultSize Unlimited -identity $UserName |Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={$_.EmailAddresses |Where-Object {$_.PrefixString -ceq "smtp"} | ForEach-Object {$_.SmtpAddress}}} $Properties = @{ Name = $user.name City = $MOL.city Country = $MOL.Country Department = $MOL.Department Displayname = $mol.displayname EmailAddress = $Emailaddress.PrimarySmtpAddress Fax = $MOL.Fax FirstName = $MOL.firstname LastName = $MOL.LastName MobilePhone = $MOL.moiblephone Office = $MOL.Office PasswordNeverExpires = $MOL.Passwordneverexpires PhoneNumber = $MOL.Phonenumber PostalCode = $MOL.Postalcode SignInName = $MOL.SignInName State = $MOL.State StreetAddress = $MOL.StreetAddress Title = $MOL.Title UserPrincipalName = $UPN Password = random-password } $Results += New-Object psobject -Property $properties } $Results | Select-Object Name, City, Country, Department, DisplayName, Emailaddress, Fax, FirstName, LastName, MobilePhone, Office, PasswordNeverExpires, PhoneNumber, PostalCode,SignInName, State, StreetAddress, Title, UserPrincipalName, Password | Export-Csv -Path $DataPath -Encoding UTF8