Power Shell使用Trim功能

时间:2016-09-28 11:01:54

标签: powershell trim

我有以下行来检查来自两个不同系统的变量。

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,如果是这样,则通过不同的测试字符串传递它们以避免错误,但这意味着更多的代码行和更慢的代码执行。

如果任何人有简洁的方法来实现这一目标,我将不胜感激。

1 个答案:

答案 0 :(得分: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修剪它并将其存储回变量。