Change forwarding address using csv file

This topic contains 1 reply, has 1 voice, and was last updated by Profile photo of Alexander Wells Alexander Wells 3 years, 2 months ago.

  • Author
    Posts
  • #12911
    Profile photo of Alexander Wells
    Alexander Wells
    Participant

    Function set-ForwardAddresses
    {
    < # .Synopsis Changes Forward addresses of mailboxes using detailed from .csv file .Description The cmdlet uses set-mailbox -ForwardingAdrress to process to modify multiple accounts at once. #>
    [CmdletBinding()]
    Param(
    #csv File path and name details
    [parameter(Mandatory=$true,
    Helpmessage="Enter the path of the .csv that holds the USerID and ForwardAddress Information")]
    [Alias('InputFile','FilePath')]
    $FromFile
    )

    # Change SMTP addresses of users to new SMTP addresses defined in inputted csv file and delete the old smpt address
    begin
    {
    $users = Import-CSV -path $fromFile -Header("USERID","ForwardAddress")
    ide

    }
    Process
    {
    $users | foreach-object {
    $ID += $_.UserID
    $ForwardAddress += $_.ForwardAddress

    set-mailbox -identity $ID -ForwardingAddress $ForwardAddress -DeliverToMailboxAndForward $false
    write-host User $ID had forwarding address $ForwardAddress added to their mailbox
    }#close for-lopo
    }
    End
    {
    Write-Output = 'The process is finished'
    }

    }#close function

    I have created a function and added it to my module, imported it.

    [PS] C:\scripts>set-ForwardAddresses -FromFile 'C:\Users\AWAdmin\Documents\WindowsPowerShell\email mailboxes\EmailForwards.csv'

    add-pssnapin : Cannot add Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because it is alrea
    dy added. Verify the name of the snap-in and try again.
    At C:\users\awadmin\Documents\WindowsPowerShell\Modules\CustomAWEmailFunctions\CustomAWEmailFunctions.psm1:23 char:21
    + add-pssnapin <<<< Microsoft.Exchange.Management.PowerShell.E2010 + CategoryInfo : InvalidArgument: (Microsoft.Excha...owerShell.E2010:String) [Add-PSSnapin], PSArgumentEx ception + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand Cannot process argument transformation on parameter 'Identity'. Cannot convert the "System.Collections.ArrayList" value of type "System.Collections.ArrayList" to type "Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter". + CategoryInfo : InvalidData: (:) [Set-Mailbox], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Set-Mailbox + PSComputerName : hww-cas01.hogarthww.prv Is there any way I can fix this please? Thanks Alex

  • #12912
    Profile photo of Alexander Wells
    Alexander Wells
    Participant

    Function set-ForwardAddresses
    {
    < # .Synopsis Changes Forward addresses of mailboxes using detailed from .csv file .Description The cmdlet uses set-mailbox -ForwardingAdrress to process to modify multiple accounts at once. #>
    [CmdletBinding()]
    Param(
    #csv File path and name details
    [parameter(Mandatory=$true,
    Helpmessage="Enter the path of the .csv that holds the USerID and ForwardAddress Information")]
    [Alias('InputFile','FilePath')]
    $FromFile
    )

    # Change SMTP addresses of users to new SMTP addresses defined in inputted csv file and delete the old smpt address
    begin
    {
    $users = Import-CSV -path $FromFile -Header("USERID","ForwardAddress")

    }
    Process
    {
    $users | foreach-object {

    set-mailbox -identity $_.UserID -ForwardingAddress $_.ForwardAddress -DeliverToMailboxAndForward $false
    write-host User $_.UserID had forwarding address $_.ForwardAddress added to their mailbox
    }#close for-lopo
    }
    End
    {
    Write-Output = 'The process is finished'
    }

    }#close function

    This worked using $_. in the cmdlet directly instead of via a variable

You must be logged in to reply to this topic.