【发布时间】:2017-02-06 07:43:13
【问题描述】:
您好我有以下行来检查来自两个不同系统的变量。
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。
问题在于它有一个 or 操作符来说明在 HR 数据库系统中“名字”或“被称为名字”或实际上两者都可能被填写并需要检查的事实。
我想使用 .Trim 函数以防有人留在空白处,但如果我将它放在一个变量上并且该变量最终为空,它会抛出错误,这通常是“已知”的情况作为名称”变量。
谁能建议最有效的方法来检查和修剪每个变量。
在检查它们不为空后,我可以预先修剪所有变量。 或者测试它们是否为空,如果是,则通过不同的测试字符串传递它们以避免错误,但这都意味着更多的代码行和更慢的代码执行速度。
如果有人有一种简洁的方法来实现这一点,我将不胜感激。
【问题讨论】:
标签: powershell trim