2017-11-13 1 views
1

Ich habe eine Frage bezüglich der Mailadressen-Erzeugungslogik. Es beginnt mit der Annahme FirstName.Lastname, und prüfen, ob das schon in AD ist.adsisearcher Fehler: "Der Suchfilter (mail = john.doe)) ist ungültig"

Wenn es bereits vorhanden ist, wird es Zahlen von Ende hinzufügen letzten Namen, bis er eine nicht verwendete Mail-Adresse findet:

[email protected], [email protected], [email protected] usw.

Hinweis: wir den Vornamen haben als $FirstName und der Nachname als $LastName

$count = $null 
do { 
    $query = "(mail=$username$count))" 
    $result = ([adsisearcher]$query).FindOne() 
    if ($result) {if ($count -eq $null) {$count = 2} else {$count++}} 
} while ($result) 

Write-Host "The account name you should use is: $username$count" 

Hier meine Fehlermeldung lautet:

Exception calling "FindOne" with "0" argument(s): "The (mail=john.doe)) search filter is invalid."
At line:5 char:45

+2

Als Fehler states '" Der Suchfilter (mail = john.doe)) ist ungültig. " ', Sie verwenden einen ungültigen Suchfilter. Vielleicht hilft dieser Link: https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx – Moerwald

+0

An anderer Stelle in Ihrem Skript setzen Sie '$ username =" $ FirstName. $ LastName ' –

+0

Sie sind der richtige Mann. Ich benutze $ username = $ Vorname +". "+ $ Nachname – Arbelac

Antwort

1

Wenn ich Sie gut verstehe, möchten Sie die nächste verfügbare E-Mail-Adresse finden und 1 am Ende davon hinzufügen, falls es existiert?

wenn ja, können Sie diese einfache Funktion:

Ihre Eingabe als E-Mail-Format hinzufügen, und es wird 1 hinzufügen, bis er es nicht gefunden wird, und geben die verfügbare E-Mail

Function Get-AvailableMail() 
{ 
Param(
$Email 
) 

$i = 1 

    while (([adsisearcher]"(&(mail= $($Email)))").FindOne()) 
    { 
    $Email = ($Email -split '@')[0] + "[email protected]" + ($Email -split '@')[1] 
    $i++ 
    } 

    return $Email 

} 
+0

Vielen Dank Meine letzte Frage: Ich möchte nur den Wert auf "@" innerhalb von $ Email Variable mit Powershell erhalten.Wenn zum Beispiel Mailadresse [email protected] ist, möchte ich nur User1 abrufen. – Arbelac

+0

Sie meinen die Ausgabe? Wenn ja, ändere 'return $ Email' in' return ($ Email -split '@') [0] ' – Avshalom

Verwandte Themen