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之後預先修剪所有變量。 或測試它們是否爲空,如果是這樣,則將它們傳遞給不同的測試字符串以避免錯誤,但是這意味着更多的代碼行和更慢的代碼執行。
如果任何人有一個簡潔的方式來實現這一點,我將不勝感激的建議。