Search code examples
powershellscriptingoffice365exchange-server

Set-User: A parameter cannot be found that matches parameter name 'Title' using Connect-ExchangeOnline


I am writing a script that will update Exchange mailbox attributes from a CSV file. When I run my script I get a 'A parameter cannot be found that matches parameter name 'Title'." error. Any ideas. I am tring to change The title property within the organisation tab in Exchange.

I know what the error message means but I can't find anywhere what the syntax is for changing the title attribute.

Script:

# Updates AD user attributes from CSV file


$Credential = Get-Credential
Connect-ExchangeOnline -Credential $Credential

# Load data from file.csv
$ADUsers = Import-csv file_path

# Count variable for number of users update
$count = 0

# Go through each row that has user data in the CSV we just imported 
ForEach($User in $ADUsers)
{
    # Ppopulate hash table for Get-ADUser splatting:
    $GetParams =
    @{
        Identity     = $User.Username
    }

    # Initialize hash table for Set-ADUser splatting:
    $SetParams =
    @{
        Title        = $User.Title  
    }

    # Check to see if the user already exists in AD. If they do, we update.
    if ( Get-EXORecipient @GetParams)
    {
         # Set User attributes
         Set-User @SetParams -WhatIf

         # Print that the user was updated 
         Write-Host -ForegroundColor Yellow "$User - User attributes have been updated." 

         # Update Count
         $count += 1    
     }
}

# Print the number of updated users
Write-Host $count "Users have been updated" -ForegroundColor Green

Error Message:

A parameter cannot be found that matches parameter name 'Title'.
    + CategoryInfo          : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Set-Mailbox
    + PSComputerName        : outlook.office365.com

Solution

  • Your params for Set-User doesn't contain -Identity so PowerShell doesn't know to whom the title should be set. You need to add it:

    $SetParams =
    @{
        Identity     = $User.Username
        Title        = $User.Title  
    }
    

    Make sure that Username contains valid identity, so the user can be determined based on it.