2012-01-26 9 views
1

人事部が私に、更新された「会社」と「場所」フィールドを持つ数千人のユーザーのリストを提供しました。このファイルを基にADを整理したいと思います。 名前に「ソフトマッチング」をする必要があります。なぜなら、すべての名前が100%に一致するかどうかわからないからです。 このようにスクリプトを作成するにはどうすればよいですか?入力としてCSVを使用して広告を整理する

Sune、ノルウェー:)

+1

だからあなたはそれがあなたのために行うことsmebodyを期待: 私は、しかし、次の完全なスクリプトで終わりました(これは他の誰かに有用であることことを願って)?これまで何をしようとしていますか? – JPBlanc

+0

あなたはもちろん、JPBlancです。私は誰かが私のためにこれをすることを期待するべきではありません:)私はそうではありません。私はちょうど私が正しい方向に(またはそうではなく)始まったことを確認するための出発点を探していました。私はオフィスに帰るとすぐにスクリプトブロックを投稿します。 – Sune

答えて

2

Windows 2008サーバーを使用している場合は、PowerShell用のネイティブAD管理モジュールが含まれています。だからあなたはクエストパックは必要ありません。

これは、ユーザーとコンピュータの「オフィス」フィールドに場所情報を書き込むことを前提としています。 IDの*はソフト検索を行う必要があります。

1

私はQuest ActiveRoles Server PowerShell CmdLetsを使用します。 Get-QADUser examplesをチェックしてください。

$updates = Import-Csv updates.txt 

foreach ($update in $updates) { 
    $user = Get-QADUser -SamAccountName $update.SamAccountName 
    $user.Company = $update.Company 
    # Location is not an attribute of the user 
    #$user.Location = $update.Location 
} 
0

ありがとうございます。

Clear-Host 

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin -ErrorAction silentlycontinue 
Add-PSSnapin quest.activeroles.admanagement -ErrorAction silentlycontinue 

$file = "\Scripts\employees.csv"  # Location of the input file 
$file2 = "\Scripts\employees2.csv"  # Temp file 
$logfile = "\Scripts\logfile.txt" # log file 
remove-item $logfile -Force -ErrorAction SilentlyContinue 

Get-Content $file | Out-File -Encoding UTF8 $file2       # Convert to UTF8 (we don't touch the original inputfile) 
$ListEmployees = Import-Csv $file2 -Delimiter ";"       # Import the file to CSV 

foreach ($ListEmployee in $ListEmployees) { 
$ListDisplayName = $ListEmployee.firstname + " " + $ListEmployee.lastname 

if($ADemployee = Get-QADUser -displayname $ListDisplayName -IncludedProperties employeeid) 
{ 
    ## CHECK NAME 
    if($($ADEmployee.displayname) -eq $($ListDisplayName)) 
    { 
     echo "MATCH: $($ADEmployee.displayname)" 
    } 

    ## CHECK COMPANY 
    if($($ADEmployee.company) -ne $($ListEmployee.company)) 
    { 
     echo "  CHANGE - Company: '$($ADEmployee.company)' to '$($ListEmployee.company)'" 
     Set-QADUser -identity $($ADEmployee.samaccountname) -Company $($ListEmployee.company) -WhatIf 
    } 
    else 
    { 
     echo "  OK  - Company  : no change '$($ListEmployee.company)'" 
    } 

    ## CHECK OFFICE 
    if($($ADEmployee.office) -ne $($ListEmployee.office)) 
    { 
     echo "  CHANGE - Office '$($ADEmployee.office)' to '$($ListEmployee.office)'" 
     Set-QADUser -identity $($ADEmployee.samaccountname) -Office $($ListEmployee.Office) -WhatIf 
    } 
    else 
    { 
     echo "  OK  - Office  : no change '$($ListEmployee.office)'" 
    } 

    ## CHECK MOBILE 
    if($listemployee.mobile -match '\S') 
    { 
     if($($ADEmployee.mobile) -ne $($ListEmployee.mobile)) 
     { 
      echo "  CHANGE - Mobile : '$($ADEmployee.mobile)' to '$($ListEmployee.mobile)'" 
      Set-QADUser -identity $($ADEmployee.samaccountname) -Mobile $($ListEmployee.mobile) -WhatIf 
     } 
     else 
     { 
      echo "  OK  - Mobile  : no change '$($ListEmployee.mobile)'" 
     } 
    } 

    ## CHECK EMPLOYEEID 
    if($($ADEmployee.employeeid) -ne $($ListEmployee.employeeid)) 
    { 
     echo "  CHANGE - EmployeeID: '$($ADEmployee.employeeid)' to '$($ListEmployee.employeeid)'" 
     Set-QADUser -identity $($ADEmployee.samaccountname) -ObjectAttributes @{employeeID = $($ListEmployee.employeeid)} -WhatIf 

    } 
    else 
    { 
     echo "  OK  - EmployeeID : no change '$($ListEmployee.employeeid)'" 
    } 
    $match++ 
} 
else 
{ 
    if($EXContact = Get-Contact $ListDisplayName -ErrorAction SilentlyContinue) 
    { 
     echo "MATCH CONTACT: $ListDisplayName (contact)" 

     ## CHECK MOBILE 
     if($listemployee.mobile -match '\S') 
     { 
      if($($EXContact.Mobilephone) -ne $($ListEmployee.mobile)) 
      { 
       echo "  CHANGE - Mobile : '$($EXContact.Mobilephone)' to '$($ListEmployee.mobile)'" 
      } 
      else 
      { 
       echo "  OK  - Mobile ; No change ($($ListEmployee.mobile))" 
      } 
     } 

     ## CHECK COMPANY 
     if($($EXContact.company) -ne $($ListEmployee.company)) 
     { 
      echo "  CHANGE - Company: '$($EXContact.company)' to '$($ListEmployee.company)'" 
     } 
     else 
     { 
      echo "  OK  - Company : No change($($ListEmployee.company))" 
     } 

     ## CHECK OFFICE 
     if($($EXContact.office) -ne $($ListEmployee.office)) 
     { 
      echo "  CHANGE - Office '$($EXContact.office)' to '$($ListEmployee.office)'" 
     } 
     else 
     { 
      echo "  OK  - Office : No Change($($ListEmployee.office))" 
     }  
     $contactmatch++ 
    } 
    else 
    { 
     echo "$ListDisplayName" | Out-File $logfile -Append 
     echo "NO MATCH: $ListDisplayName" 
     $nomatch++ 
    } 
} 
$i++ 
} 
echo " " 
echo "List contains $i accounts" 
echo "Accounts: $match matches" 
echo "Contacts: $contactmatch" 
echo "No Match: $nomatch" 
関連する問題