Solved

How to Enable-Mailbox and Set-QADuser parameters within single script?

Posted on 2010-08-29
2
1,282 Views
Last Modified: 2012-06-27
Hello experts,
I'm a powershell novice and need some guidance.  We are going to migrate 250 AD accounts from several domains, including 2003 DCs, to a new domain on 2008 servers, with Exchange 2010 mail servers. ADMT creates the new accounts just fine. I want to mailbox-enable the migrated accounts and then update the AD attributes with one script, reading the data from a csv file. The attached code works great with just the Enable-Mailbox command, or with just the Set-QADuser command. When both processes are included, if fails at Set-QADuser. I'm guessing that after Enable-Mailbox runs, the data from import csv is cleared, causing the failure when Set-QADuser tries to run.  How do I fix the code to run both processes.
function Select-FileDialog 
{
	param([string]$Title,[string]$Directory,[string]$Filter="CSV Files (*.csv)|*.csv")
	[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
	$objForm = New-Object System.Windows.Forms.OpenFileDialog
	$objForm.InitialDirectory = $Directory
	$objForm.Filter = $Filter
	$objForm.Title = $Title
	$objForm.ShowHelp = $true
	
	$Show = $objForm.ShowDialog()
	
	If ($Show -eq "OK")
	{
		Return $objForm.FileName
	}
	Else
	{
		Exit
	}
}
$FileName = Select-FileDialog -Title "Import a CSV file                          BE CAREFUL - Use the CORRECT CSV File" -Directory "c:\"

Import-Csv $FileName |
	foreach {Enable-Mailbox -Identity $_.UPN -Database $_.Database -DisplayName $_.Name -Alias $_.Alias }

ForEach-Object{
    set-qaduser -Identity $_.sAMAccountName -Email $_.Email -MobilePhone $_.MobilePhone -HomeDirectory $_.HomeDirectory	-HomeDrive $_.HomeDrive -LogonScript $_.LogonScript -UserPrincipalName "$($_.sAMAccountName)@cpa.firm" -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.Name 
	}

Open in new window

NewUserProfiles.csv
0
Comment
Question by:CraigMan
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 9

Accepted Solution

by:
jjoseph_x earned 500 total points
ID: 33555608
Just put the Set-QADUser command in the same foreach block as the Enable-Mailbox.


Import-Csv $FileName |
	foreach {Enable-Mailbox -Identity $_.UPN -Database $_.Database -DisplayName $_.Name -Alias $_.Alias
    set-qaduser -Identity $_.sAMAccountName -Email $_.Email -MobilePhone $_.MobilePhone -HomeDirectory $_.HomeDirectory	-HomeDrive $_.HomeDrive -LogonScript $_.LogonScript -UserPrincipalName "$($_.sAMAccountName)@cpa.firm" -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.Name 
	};

Open in new window

0
 

Author Closing Comment

by:CraigMan
ID: 33589254
short and sweet!
Thanks
0

Featured Post

Does Powershell have you tied up in knots?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

Question has a verified solution.

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

Active Directory security has been a hot topic of late, and for good reason. With 90% of the world’s organization using this system to manage access to all parts of their IT infrastructure, knowing how to protect against threats and keep vulnerabil…
If you troubleshoot Outlook for clients, you may want to know a bit more about the OST file before doing your next job. IMAP can cause a lot of drama if removed in the accounts without backing up.
This tutorial will walk an individual through the process of transferring the five major, necessary Active Directory Roles, commonly referred to as the FSMO roles to another domain controller. Log onto the new domain controller with a user account t…
This tutorial will walk an individual through the process of configuring their Windows Server 2012 domain controller to synchronize its time with a trusted, external resource. Use Google, Bing, or other preferred search engine to locate trusted NTP …

726 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