2016-09-28 1 views
2

안녕하세요 두 개의 다른 시스템에서 변수를 확인하려면 다음 행이 있어야합니다.트림 기능을 사용하는 파워 쉘

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 데이터베이스 시스템에서 "이름"또는 "알려진 이름"또는 실제로 둘 다 채워져 검사해야한다는 사실을 설명하는 an or 연산자가 있다는 것입니다.

일부는 공백으로 남겨 두었을 경우에 .Trim 함수를 사용하려고하지만, 변수에 대해 배치하면 변수가오고 오류는 null로 끝납니다.이 경우는 종종 " 이름 "변수라고합니다.

누구나이 검사를 수행하고 각 변수에 대해 가장 효율적인 방법을 제시 할 수 있습니까?

null이 아닌지 확인한 후 모든 변수를 미리 정돈 할 수 있습니다. 또는 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()} 

의 시작이를 추가하고 그래서 초기에 null 값 다시 변수에 경우는 null되지 트림을 저장을위한 수표.