Hello, i have an issue with a powershell script

HI,
I have an issue with a script that is working fine for the most part. I can import everything from a csv except two fields these are otherTelephone and Country/C/co/CountryCode. these two fields I can import on an individual basis but this is going to be very time consuming.

here are the codes.
1;
This works fine except It does not import those two attributes from above, causes it to error with parameters not found.
# Import AD Module
Import-Module ActiveDirectory

# Import CSV into variable $userscsv

$users = Import-Csv -Path "C:\Users\Administrator\Desktop\ADextracttestserver.csv"
# Loop through CSV and update users if the exist in CSV file
$ExcludeProperties = @(	
    )

foreach ($user in $users)
{
	$Arguments = @{}
    $user | Get-Member -MemberType NoteProperty | ? {$ExcludeProperties -NotContains $_.Name} | % {if ($user.($_.Name)) {$Arguments[$_.Name] = $user.($_.Name)} Else {$Arguments[$_.Name] = $Null}}
	

   #Search in specified OU and Update existing attributes            
	Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" -Properties * -SearchBase "ou=Test Users,DC=testaf,DC=local" | Set-ADUser @Arguments 
}

Open in new window

2;
this works but on an individual basis, the issue here is that I need this to be part of the main script so it runs in bulk querying the users in the csv and I also need it to import the numbers from the csv not a pre defined set like 123 below.
set-aduser testuser -Add @{otherTelephone = 123} 

Open in new window

and finally;
this is the same situation as above, needs to be part of the main script and preferably query the csv if possible but not essential as all users are in the same country.
set-aduser testuser -replace @{C = 'UK'} 

Open in new window

any help will be appreciated.
BYRONJACKSONAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Chris DentPowerShell DeveloperCommented:
Good morning,

If you add otherTelephone and C fields to your CSV file this will let you import them.
# Import AD Module
Import-Module ActiveDirectory

# Import CSV into variable $userscsv

$users = Import-Csv -Path "C:\Users\Administrator\Desktop\ADextracttestserver.csv"
# Loop through CSV and update users if the exist in CSV file
$ExcludeProperties = @("otherTelephone", "C")

foreach ($user in $users) {
  $Arguments = @{}
  $user |
    Get-Member -MemberType NoteProperty |
    ? {$ExcludeProperties -NotContains $_.Name} | 
    % {if ($user.($_.Name)) {$Arguments[$_.Name] = $user.($_.Name)} Else {$Arguments[$_.Name] = $Null}}
	
  #Search in specified OU and Update existing attributes            
	$ADUser = Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" -Properties * -SearchBase "ou=Test Users,DC=testaf,DC=local"
	
	if ($ADUser) {
	  $ADUser | Set-ADUser @Arguments
	  $ADUser | Set-ADUser -Add @{otherTelephone = $user.OtherTelephone}
	  $ADUser | Set-ADUser -Replace @{C = $user.C}
	}
}

Open in new window

HTH

Chris
0
BYRONJACKSONAuthor Commented:
Hi Chris,

thanks I have them already set in the csv so I will give this a try and get back to you.
0
BYRONJACKSONAuthor Commented:
Hi,

I now receive this error

Set-ADUser : add
At line:22 char:14
+       $ADUser | Set-ADUser -Add @{otherTelephone = $user.OtherTelephone}
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (CN=Microsoft,OU...Testaf,DC=local:ADUser) [Set-ADUser], ADInvalidOperationException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.SetADUser
0
Top Threats of Q1 & How to Defend Against Them

WEBINAR: Join WatchGuard CTO and our Threat Research Team on Aug. 2nd to hear the findings from our Q1 Internet Security Report! Learn more about the top threats detected in the first quarter and how you can defend your business against them!

Chris DentPowerShell DeveloperCommented:
Is otherTelephone ever blank in your CSV file?

I suspect it may get upset if you try and feed in an unexpected value (like nothing at all).

Chris
0
BYRONJACKSONAuthor Commented:
Yes there are a few blank fields as not all users have a number to assign to them, how can I get it to ignore/skip those fields?
0
Chris DentPowerShell DeveloperCommented:
We can test for the value before we try and set it:
# Import AD Module
Import-Module ActiveDirectory

# Import CSV into variable $userscsv

$users = Import-Csv -Path "C:\Users\Administrator\Desktop\ADextracttestserver.csv"
# Loop through CSV and update users if the exist in CSV file
$ExcludeProperties = @("otherTelephone", "C")

foreach ($user in $users) {
  $Arguments = @{}
  $user |
    Get-Member -MemberType NoteProperty |
    ? {$ExcludeProperties -NotContains $_.Name} | 
    % {if ($user.($_.Name)) {$Arguments[$_.Name] = $user.($_.Name)} Else {$Arguments[$_.Name] = $Null}}
	
  #Search in specified OU and Update existing attributes            
	$ADUser = Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" -Properties * -SearchBase "ou=Test Users,DC=testaf,DC=local"
	
	if ($ADUser) {
	  $ADUser | Set-ADUser @Arguments
    if ($user.OtherTelephone) {
      $ADUser | Set-ADUser -Add @{otherTelephone = $user.OtherTelephone}
    }
    if ($user.C) {
      $ADUser | Set-ADUser -Replace @{C = $user.C}
    }
  }
}

Open in new window

As you can see, I've done the same test for the C value.

Chris
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
BYRONJACKSONAuthor Commented:
thank you Chris that has worked a charm!!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Powershell

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.