2016-09-28 4 views
2

HI私は次の行を使って2つの異なるシステムの変数をチェックしています。トリム関数を使用したPowerシェル

foreach ($val in $stafflist) 
    { 
    $found = 0 
    foreach ($user in $aduser) 
    if ((($val.Surname.trim() -eq $user.surname.trim()) -And ($val.'First Name'.trim() -eq $user.Givenname.trim())) -or (($val.Surname.trim() -eq $user.surname.trim()) -And ($val.'Known As'.trim() -eq $user.Givenname.trim()))) 
     { 
     $found = 1 
      try 
       { 
       if ($user.EmployeeID -ne $null) 
        { 

        $val.'First Name' + " " + $val.'Known As' + " " + $val.surname + " EmployeedID already set as " + $user.EmployeeID | Out-File $outfile -Append 
            } 

       else 
        { 
        set-aduser -Identity $user -EmployeeID $val.'Person Number' 

        $val.'First Name' + " " + $val.'Known As' + " " + $val.surname + " Employeed set to " + $user.EmployeeID| Out-File $outfile -Append 
            } 
    } ## end of Try 
Catch 
    { 
     $val.'First Name' +" " + $val.surname + "Can not be updated in AD" | Out-File $outfile -Append 
     } 
} 

だから、これはマッチを探して互いに対する二つのリスト($のstafflistと$ aduser)内の各ユーザをチェックし、それが一致するものを見つけたとき、それはHRデータベースからIDをActive Directory内の従業員IDを更新。

HRデータベースシステムでは、「名」または「名前がわかっています」または実際に両方が入力され、チェックする必要があるという事実を説明するのに問題があります。

空白で残っているものがある場合には.Trim関数を使用したいが、変数に対して配置するとその変数はスローされてエラーになり、その変数はヌルとして終了することがよくあります。名前 "変数として知られています。

このチェックを行い、変数ごとにトリムする最も効率的な方法を提案する人はいますか?

変数がすべてnullでないことを確認した後、それをトリミングすることができます。 か、それらがヌルであるかどうかをテストし、そうであればエラーを避けるために異なるテスト文字列を渡しますが、それだけ多くのコード行とコードの実行が遅くなります。

これを達成するための簡潔な方法があれば、私はその提案に感謝します。私はちょうどそれがnull値をチェックしていない場合はnullトリムそれと店舗裏の変数にそれに早いので、ループ

if ($val.Surname -eq $null){} else {$val.Surname = $val.Surname.trim()} 
if ($val.'First Name' -eq $null){} else {$val.'First Name' = $val.'First Name'.trim()} 
if ($val.'Known As' -eq $null){} else {$val.'Known As' = $val.'Known As'.trim()} 

の先頭にこれを追加してい最後に

答えて

関連する問題