moving users from one storage group to another in exchange 2007

Posted on 2011-04-18
Last Modified: 2012-06-22
Hi ive been trying to move users (please see attachment) from one storage group to another using the script below.

$users =  Import-Csv sheeta.csv -Header (gc sheeta.csv)[0].trim(",").split(",") | select -skip 1
foreach ($user in $users) {move-mailbox $user.DisplayName -targetDatabase $user.targetdatabase}

I kept getting this error message. Am i doing something wrong with the script.  Thank you all.  Im running it in the exchange console

PS] C:\Documents and Settings\admin.jamiec>$users =  Import-Csv dat03.csv -Head
er (gc sheeta.csv)[0].trim(",").split(",") | select -skip 1
Get-Content : Cannot find path 'C:\Documents and Settings\admin.jamiec\sheeta.c
sv' because it does not exist.
At line:1 char:43
+ $users =  Import-Csv dat03.csv -Header (gc <<<<  sheeta.csv)[0].trim(",").spl
it(",") | select -skip 1
    + CategoryInfo          : ObjectNotFound: (C:\Documents an...miec\sheeta.c
   sv:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetCo

Cannot index into a null array.
At line:1 char:56
+ $users =  Import-Csv dat03.csv -Header (gc sheeta.csv)[ <<<< 0].trim(",").spl
it(",") | select -skip 1
    + CategoryInfo          : InvalidOperation: (0:Int32) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

[PS] C:\Documents and Settings\admin.jamiec>foreach ($user in $users) {move-mail
box $user.DisplayName -targetDatabase $user.targetdatabase}
Move-Mailbox : Cannot bind argument to parameter 'TargetDatabase' because it is
At line:1 char:74
+ foreach ($user in $users) {move-mailbox $user.DisplayName -targetDatabase <<<
<  $user.targetdatabase}
    + CategoryInfo          : InvalidData: (:) [Move-Mailbox], ParameterBindin
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,M

Question by:happyexchange
    LVL 13

    Accepted Solution

    Please write the full path here:

     Import-Csv c:\yourpath\sheeta.csv

    or set the location where the CSV file resides.

    All other errors caused by this.

    Author Comment

    so leave out $users = import-csv

    The csv file is saved as dat03.csv in my admin profile on the exchange. Does that matter
    LVL 13

    Expert Comment

    No, leave '$users = ' there, but extend the path to full path.

    Author Comment

    Sorry mate.

    So c:\documentsand settings\adminjamiec

    But when i open the exchange cmdlet that is aleady there.  it starts with C:\documentsand settings\adminjamiec\ then i put the script in.
    LVL 13

    Expert Comment

    Sorry, the the path is missing from here also:

    (gc sheeta.csv)

    Anyway, the file should be edited a bit: the empty lines should be deleted, and the one with some summary data in it should also be deleted.
    And I also recommend to fill in all the headers in each column. If you do this, you can simplify the import to:

    $users =  Import-Csv c:\yourfile\sheeta.csv

    Author Comment

    I have split the spreadsheet into 3 called dat01 + dat02 + dat03 and deleted any lines.

    Sorry mate could you write the script so i would know what it is and do.

    Thank you for everything

    LVL 13

    Expert Comment

    If you have 3 CSV files, no emptly lines, no summary, but a column header for every columns that have values and for all columns that are between columns that have values, then you can do the following:

    $users =  @(Import-Csv c:\yourpath\sheeta.csv) + @(Import-Csv c:\yourpath\sheetb.csv) +@(Import-Csv c:\yourpath\sheetc.csv)
    foreach ($user in $users) {move-mailbox $user.DisplayName -targetDatabase $user.targetdatabase}


    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    6 Surprising Benefits of Threat Intelligence

    All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

    Create high volume marketing opportunities using email signatures with these top 10 DOs and DON'Ts of email signature marketing.
    "Migrate" an SMTP relay receive connector to a new server using info from an old server.
    In this video we show how to create a Shared Mailbox in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Recipients >> Sha…
    The basic steps you have just learned will be implemented in this video. The basic steps are shown to configure an Exchange DAG in a live working Exchange Server Environment and manage the same (Exchange Server 2010 Software is used in a Windows Ser…

    759 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

    Need Help in Real-Time?

    Connect with top rated Experts

    13 Experts available now in Live!

    Get 1:1 Help Now