Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Powershell to update Office365 user attributes

Posted on 2015-02-19
15
Medium Priority
?
685 Views
Last Modified: 2015-02-21
Hi,

I am looking for a way to use powershell to insert a value into "custom attribute 1" for all users using a value found in the "Office" attribute.  

Can this be done with 1 ForEach script somehow?  

Please see attached screen shots that detail exactly which fields I am referring to.   The attachment is in the comment below.

Thanks
0
Comment
Question by:AD1080
  • 7
  • 6
  • 2
15 Comments
 
LVL 53

Expert Comment

by:Will Szymkowski
ID: 40619261
You can do this via powershell. Use the below command...
This will add the value of 40 to the CustomAttribute1 for all mailboxes.
$Mailboxes = get-mailbox -resultsize "unlimited"
foreach ($Mailbox in $Mailboxes) {
Set-Mailbox -Identity $Mailbox -CustomAttribute1 40
}

Open in new window


Will.
0
 

Author Comment

by:AD1080
ID: 40619268
Hi Will,

Thanks very much.  Can you take this a step further, and make the value for "CustomAttribute1" whatever each user has for in the field "Office".

i.e. can we load whatever they have for "Office" into a variable, and use that in place of the hardcoded "40".

Sorry, I'm very new to powershell.  I dont have a handle on it yet.
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 53

Expert Comment

by:Will Szymkowski
ID: 40619331
You can do this, however i do not have o365 setup. What is the cmdlet to get this Office attribute using powershell. If you can provide that for me i can add it to the above.

Will.
0
 
LVL 44

Expert Comment

by:Vasil Michev (MVP)
ID: 40619662
It's again "Office", if it's populated that is.
0
 
LVL 53

Expert Comment

by:Will Szymkowski
ID: 40619722
@Vasil - Right but what cmdlet would populate this attribute? Does Get-Mailbox populate this info? Or is it another cmdlet?

Will.
0
 
LVL 44

Expert Comment

by:Vasil Michev (MVP)
ID: 40619787
Get-Mailbox, Get-Recipient, Get-User, Get-MsolUser, all of them :)
0
 
LVL 53

Accepted Solution

by:
Will Szymkowski earned 2000 total points
ID: 40623368
Sorry for the delay...

If that is all that is needed all you need is the following changed see below...
$Mailboxes = get-mailbox -resultsize "unlimited"
foreach ($Mailbox in $Mailboxes) {
Set-Mailbox -Identity $Mailbox -CustomAttribute1 $Mailbox.Office
}

Open in new window


Make sure you test this with a couple users first as i have not tested this part but i am sure it will work.

Will.
0
 

Author Comment

by:AD1080
ID: 40623410
Hi, Thanks a lot.  Sorry for the delay on my part  as well.   We'll test this out.  

Actually just came up with the following a moment ago after spending a few hours getting  more familiar with Powershell.  Does this look to achieve the same result.  Granted your solution is cleaner.

$Mailboxes = get-mailbox -resultsize "unlimited"
foreach ($Mailbox in $Mailboxes)

{
$Office = (Get-User $MailBox.name).office
}
{
Set-Mailbox -Identity $Mailbox -CustomAttribute1 $Office
}
0
 
LVL 53

Expert Comment

by:Will Szymkowski
ID: 40623416
You should not have to add the $Office var because it is already part of the $Mailboxes var because Office is an attribute of Get-Mailbox cmdlet. So all you need to do is just (.) dot source the var using the office attribute $Mailbox.Office which is what i did in the most recent script I posted.

I guess yours could work to but it is just redundant.

Will.
0
 

Author Comment

by:AD1080
ID: 40623417
Thanks again, I'll try yours.
0
 
LVL 53

Expert Comment

by:Will Szymkowski
ID: 40623420
Excellent!

Will.
0
 

Author Comment

by:AD1080
ID: 40623425
Actually would you mind showing us how to add the filter too?
0
 
LVL 53

Expert Comment

by:Will Szymkowski
ID: 40623429
Just open a new question and let me know what the link is. I will provide the solution.

Will.
0

Featured Post

Simplify Active Directory Administration

Administration of Active Directory does not have to be hard.  Too often what should be a simple task is made more difficult than it needs to be.The solution?  Hyena from SystemTools Software.  With ease-of-use as well as powerful importing and bulk updating capabilities.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As much as Microsoft wants to kill off PST file support, just as they tried to do with public folders, there are still times when it is useful or downright necessary to export Exchange mailboxes to PST files. Thankfully, it is still possible to e…
If something goes wrong with Exchange, your IT resources are in trouble.All Exchange server migration processes are not designed to be identical and though migrating email from on-premises Exchange mailbox to Cloud’s Office 365 is relatively simple…
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
Suggested Courses

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question