2016-09-28 55 views
2

HI我有以下行來檢查來自兩個不同系統的變量。使用修剪功能的電源外殼

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之後預先修剪所有變量。 或測試它們是否爲空,如果是這樣,則將它們傳遞給不同的測試字符串以避免錯誤,但是這意味着更多的代碼行和更慢的代碼執行。

如果任何人有一個簡潔的方式來實現這一點,我將不勝感激的建議。

回答

0

最終我只是添加此向循環

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()} 

開始所以早期檢查空值,如果不爲空修剪它,並將其存儲回變量。