Solved

Exchange 2007 Userdefines Parameters in powershell

Posted on 2012-12-21
19
680 Views
Last Modified: 2013-01-08
Hi @all. One more silly question just before Christmas :):
I have an Exchange 2007 installed in German.
I have to import quite a lot of external contacts which should then be member of a dynamic distribution list. The argument for the membership should be a keyword in the user defined parameters (1-15) of the contact.
my problem is, that i don't know the exact expression for the argument in the powershell. i tried the following list:
extensionAttribute1
userdefinedAttribute1
BenutzerdefiniertesAttribut1
...

The powershell command I run is this:
Import-Csv d:\import\KES-Liste1.csv | ForEach {New-MailContact -LastName $_.Nachname -Firstname $_.Vorname -Name $_.Name -DisplayName $_.Anzeigename -ExternalEmailAddress $_.ExterneEMailAdresse -Alias $_.Alias -OrganizationalUnit "pizh.local/KES" -customAttribute1 $_.BenutzerdefiniertesAttribut1 -CustomAttribute2 $_.BenutzerdefiniertesAttribut2 -CustomAttribute3 $_.BenutzerdefiniertesAttribut3}

With that I always the error:
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.Exchange.Management.RecipientTasks.NewMailContact

The csv-file looks like this:
Nachname,Vorname,Name,Anzeigename,ExterneEMailAdresse,Alias,BenutzerdefiniertesAttribut1,BenutzerdefiniertesAttribut2,BenutzerdefiniertesAttribut3
TestNachname,TestVorname,KES TestNachname TestVorname,KES TestNachname TestVorname,test@test.de,KESTestNachnameTestVorname,,KES,
(of course just one test argument).

Any ideas. I'll appreciate your suggestions :).
0
Comment
Question by:konga-frites
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 7
  • 2
  • +1
19 Comments
 
LVL 16

Expert Comment

by:Rajitha Chimmani
ID: 38712789
From the contents of csv that you posted it looks like there is some mismatch in the last three columns. Can you attach the values in your question in a csv file?
0
 
LVL 40

Expert Comment

by:Subsun
ID: 38712815
New-MailContact does not have parameter for custom attributes you need to add Set-MailContact for that..
0
 

Author Comment

by:konga-frites
ID: 38712830
here you are, 9 field definitions and 9 arguments (the last is emty! -> just a comma)
The problem doesn't seem to be the number of arguments, defined or not, it is the wrong name of the parameter which expresses the user defined attributes in exchange.
KES-Liste1.csv
Import-Script-KES.ps1.txt
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 40

Accepted Solution

by:
Subsun earned 260 total points
ID: 38712850
Try somthing like..
Import-Csv d:\import\KES-Liste1.csv | ForEach {New-MailContact -LastName $_.Nachname -Firstname $_.Vorname -Name $_.Name -DisplayName $_.Anzeigename -ExternalEmailAddress $_.ExterneEMailAdresse -Alias $_.Alias -OrganizationalUnit "pizh.local/KES" |
Set-MailContact -customAttribute1 $_.BenutzerdefiniertesAttribut1 -CustomAttribute2 $_.BenutzerdefiniertesAttribut2 -CustomAttribute3 $_.BenutzerdefiniertesAttribut3}

Open in new window

0
 

Author Comment

by:konga-frites
ID: 38712855
@subsun: I'll try that - should this work (attached File)????
Import-Script-KES-Variante.ps1.txt
0
 
LVL 40

Expert Comment

by:Subsun
ID: 38712877
It should work.. or you can just pipe the New-MailContact output to Set-MailContact as I mentioned in above comment..
0
 
LVL 16

Assisted Solution

by:Rajitha Chimmani
Rajitha Chimmani earned 20 total points
ID: 38712884
You can also use your script this way.

Import-Csv d:\import\KES-Liste1.csv | ForEach {New-MailContact -LastName $_.Nachname -Firstname $_.Vorname -Name $_.Name -DisplayName $_.Anzeigename -ExternalEmailAddress $_.ExterneEMailAdresse -Alias $_.Alias -OrganizationalUnit "pizh.local/KES"
Set-MailContact -Identity $_.Anzeigename -CustomAttribute1 $_.BenutzerdefiniertesAttribut1 -CustomAttribute2 $_.BenutzerdefiniertesAttribut2 -CustomAttribute3 $_.BenutzerdefiniertesAttribut3
}

Open in new window

0
 
LVL 12

Assisted Solution

by:GusGallows
GusGallows earned 20 total points
ID: 38712917
The problem you are running into is the customattribute is not a valid parameter for new-mailcontact. You will need to do that piece using the Set-mailcontact. So create your contacts first, then use the set-mailcontact parameter to set the customattribute fields.
0
 
LVL 12

Expert Comment

by:GusGallows
ID: 38712922
Gah, got ninjaed. Well, what he said.
0
 

Author Comment

by:konga-frites
ID: 38713037
So do I get you right: the ps keeps the arguments and the csv in memory until the console is closed?
Ok. I'll try later cause on the move right now. Will give you feedback.
0
 
LVL 40

Expert Comment

by:Subsun
ID: 38713075
If you assign it to a variable then yes.. For example
$temp = Import-Csv d:\import\KES-Liste1.csv
then $Temp will save the information until you close the console or re-assign it. You can also change the scope of variable in PowerShell..
0
 

Author Comment

by:konga-frites
ID: 38721928
Hey guys - thanks for your help. As there are holidays and my family and I are on break till new year. I'll test immediately after back in business. So far - happy new year.
0
 
LVL 40

Expert Comment

by:Subsun
ID: 38721948
No problem, take your time...  Have a safe, happy and successful New Year :)
0
 

Author Comment

by:konga-frites
ID: 38754981
@Subsun: Your Solution worked for this Problem but

@all:
I have now another "problem" with altering existing records.

If I want to change for multiple users one value of a field according the value in an ascii export from another tool.

So the command in the ps I use is this:

Import-Csv d:\import\KES-Liste.csv | ForEach
{
    Set-MailContact -Identity $_.Alias -CustomAttribute1 $_.BenutzerdefiniertesAttribut1
}

the values in the KES-Liste.csv are this
Nachname,Vorname,Name,Anzeigename,ExterneEMailAdresse,Alias,Organisationseinheit,Benutzerdefiniertes Attribut 1,Benutzerdefiniertes Attribut 2,Benutzerdefiniertes Attribut 3
Sample_N,Sample_SN,KES Sample_N Sample_SN,KES Sample_N Sample_SN,Sample_N@hotmail.com,KOESample_NSample_SN,OU_Sample,Unit_1,Unit_2,Unit_3

With that I get the following hint:

WARNUNG: Der Befehl wurde erfolgreich abgeschlossen, es wurden jedoch keine
Einstellungen von 'domain.local/OU_Sample/KES Sample_N Sample_SN' geändert.

Which means something like:
Warning: The command was completed successful, although no settings of  'domain.local/OU_Sample/KES Sample_N Sample_SN' were changed.

No more hints from the ps why nothing was changed. The values in the csv are definitely different to them in the AD.

Some more hints????

Tanks a lot in advance.
0
 
LVL 40

Expert Comment

by:Subsun
ID: 38755023
If this is a different problem then I would suggest you to open another question for it.. ;-)

BTB.. What if you run the command manually for one user? before running the command check the users attribute and make sure it's not same..
Set-MailContact -Identity KOESample_NSample_SN -CustomAttribute1 "Unit_1"
0
 

Author Comment

by:konga-frites
ID: 38755113
This works fine :) - but as you suggested I'll open another question for that :) - fairness first! of course
0
 
LVL 40

Expert Comment

by:Subsun
ID: 38755148
Thanks.. You may post the link to the follow-up question here, so that it will be easy for us to find it..
0
 

Author Closing Comment

by:konga-frites
ID: 38755162
as subsun was the first he deserved the lion's share. but there were also Rajitha14 and GusGallows who had the same problem-solving approach.this should also be rewarded :).

Hope you guys are satisfied with that :).
0
 

Author Comment

by:konga-frites
ID: 38755180
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In-place Upgrading Dirsync to Azure AD Connect
A project that enables an administrator to perform actions within a user session context not just at the time of login but any time later on day(s) or week(s) later.
In this video we show how to create a Contact 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 >> Contact ta…
To show how to create a transport rule 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 Mail Flow >> Rules tab.:  To cr…

726 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