0 votes

Hello there,

We have guest accounts created in AD (on our DMZ DC) that use the first initial + last name format for username with the last 4 digits of their mobile number appended to allow for unique and user specific usernames. When running a PowerShell script to update a username after a mobile number is change (to match the format) I'm getting a 'Can't find an object with identity '<currentusername>' error when using the Set-AdmUser cmdlet. The username included in the error is pulled directly from the user being modified via $Context.TargetObject.Get("samAccountName") and when outputting it to the screen via '$Context.LogMessage("Current username: $($currentUsername)", "Information")' it shows the correct current username.

Is there any special way I should be updating a username and UPN from PowerShell?

Thanks,
Chris

by (270 points)
0

Hello Chris,

For troubleshooting purposes, could you post here or send us (support[at]adaxes.com) a screenshot of the Business Rule you are using and the script it executes?

0

The Business rule just executes a PowerShell script when the mobile number is changed, and it does execute when i test. I have some $Context.LogMessage("", "Information") commands in there as validation when the script is run and the output of that is here:

 Succeeded with warnings  
 Details  
 Business Rules: 1 rule encountered while processing your request  
 'Change DMZ Username after info update': Run PowerShell script 'Update username' for the user  
  Current username: ctesting1234  
  Fisrt Name: Chris  
  Last Name: Testing  
  Mobile: 123-123-4567  
  Can't find an object with identity 'ctesting1234'.  
  New username: ctesting4567  
  Can't find an object with identity 'ctesting4567'.  
  New UPN: <ctesting4567@domain.com

Here is my script:

Import-Module Adaxes
#import-module activedirectory

#Get  First Name, last name and mobile
$currentUsername = $Context.TargetObject.Get("samAccountName")
$Context.LogMessage("Current username: $($currentUsername)", "Information")
$fn = $Context.TargetObject.Get("givenName")
$Context.LogMessage("Fisrt Name: $($fn)", "Information")
$ln = $Context.TargetObject.Get("sn")
$Context.LogMessage("Last Name: $($ln)", "Information")
$mobile = $Context.TargetObject.Get("mobile")
$Context.LogMessage("Mobile: $($mobile)", "Information")
$upnSuffix = "domain.com"
$newUsername = ""
$last4ofMobile = ""
$firstInitial = ""

#Remove spaces from Mobile
$mobile = $mobile -replace ' ',''
#Set new mobile number wihtout spaces
$Context.SetModifiedPropertyValue("mobile", $mobile)
#remove everything but digits from mobile
$mobile = $mobile -replace "[^0-9]"

#Get new Username
$firstInitial = $fn.substring(0,1)
if ($mobile.length -gt 4){
    $last4ofMobile = $mobile.Substring($mobile.Length - 4)
}else{
    $Context.LogMessage("Mobile number does not have enough digits, replacing with 1234", "Warning")
    $last4ofMobile = "1234"
}
$newUsername = $firstInitial.ToLower() + $ln.ToLower() + $last4ofMobile
$userLogonName = $newUsername + "@" + $upnSuffix

# Update User Logon Name (pre-Windows 2000)
Set-AdmUser -Identity "$($currentUsername)" -samAccountName "$($newUsername)"
$Context.LogMessage("New username: $($newUsername)", "Information")

# Update User Logon Name
Set-AdmUser -Identity "$($newUsername)" -userPrincipalName "$($userLogonName)"
$Context.LogMessage("New UPN: $($userLogonName)", "Information")
0

Ah it looks like i needed to specify that it should use the adaxes service account, the solution here did the trick for me: Unable to create an OU in a managed domain

Just adding -AdaxesService localhost at the end of the command did it for me

Thanks!
Chris

Please log in or register to answer this question.

Related questions

0 votes
1 answer

Trying to set the primary proxy when doing a name change on an email address.

asked Jul 13, 2023 by mightycabal (1.0k points)
0 votes
0 answers

Hi, I'm currently working with setting up a new Adaxes solution for a customer at my company. The customer needs a solution that can add a security group with full ... help me out here :-) That would be greatly appreciated. Best Regards, Kristoffer Høie.

asked Jun 29, 2016 by krihoie (20 points)
0 votes
1 answer

Hi, I'm trying to add a column to a report to retrieve the last login data from AAD/Graph using the script posted here but i'm running into the ... [0].signInActivity.lastSignInDateTime # Assign a column value to $Context.Value $Context.Value = $lastLogonDate

asked Feb 22, 2022 by richarddewis (260 points)
0 votes
1 answer

Trying to create a custom command to run a powershell script, but I keep getting an error saying it can't find the file or path supplied for launching powershell. ... and I can launch powershell from this location using Command Prompt. Am I missing something?

asked 6 days ago by cstaub (100 points)
0 votes
1 answer

I need a list of all the URLs that Adaxes creates in IIS on the server Adaxes is installed on.

asked Feb 6, 2020 by DaralenManta (20 points)
3,526 questions
3,217 answers
8,197 comments
547,625 users