2017-11-13 1 views
1

メールアドレス生成ロジックに関する質問があります。それはFirstName.Lastnameと仮定して開始し、それがすでにADにあるかどうかを確認します。adsisearcherエラー:「(mail = john.doe))検索フィルターが無効です」

[email protected][email protected][email protected]など

注:それがすでに存在する場合、それは未使用のメールアドレスを見つけるまで

、それが終わり、最後に名前の数字が追加されます、我々は最初の名前を持っています$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" 

として$FirstNameと最後の名前としてここに私のエラーメッセージは次のとおりです。

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

+2

を返します"(mail = john.doe)検索フィルタが無効です。" '、無効な検索フィルタを使用しています。 https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx – Moerwald

+0

スクリプトのどこかに '$ username =" $ FirstName。$ LastNameを設定すると仮定します' –

+0

あなたは正しい人です。私は$ username = $ Firstname +"を使用しています。+ $姓 – Arbelac

答えて

1

もし私があなたをよく理解していれば、次の利用可能な電子メールアドレスを見つけて、それが存在する場合には最後に1を追加したいでしょうか?

ので、あなたはこの簡単な関数を使用することができた場合:それはそれを見つけていないまで

は、電子メールの形式として、あなたの入力を追加し、それは1が追加されますが、エラーとして利用できるメール

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

ありがとう私の最後の質問:Powershellを使って$ Email変数内の値を "@"にしたいのです。たとえば、メールアドレスが[email protected]の場合、User1のみを取得したいとします。 – Arbelac

+0

出力?もしそうなら 'return $ Email'を' return($ Email -split '@')[0] 'に変更します – Avshalom

関連する問題