2016-09-28 37 views
2

HI Ich habe die folgende Zeile, um Variablen aus zwei verschiedenen Systemen zu überprüfen.Power shell mit der Trim-Funktion

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

So prüft das jeden Benutzer in zwei Listen ($ stafflist und $ ADUser) gegeneinander für die Spiele suchen, und wenn es eine Übereinstimmung findet es aktualisiert die Mitarbeiter-ID in Active Directory mit der ID aus der HR-Datenbank .

Das Problem ist, dass es einen oder einen Operator enthält, der berücksichtigt, dass im HR-Datenbanksystem entweder der "Vorname" oder "Name" oder tatsächlich beide ausgefüllt werden und überprüft werden müssen.

Ich möchte die. Trim-Funktion für den Fall, dass jemand in weißen Räumen verlassen hat, aber es wirft und Fehler, wenn ich es gegen eine Variable und diese Variable als Null, was oft der Fall ist mit der " bekannt als Name "Variable.

Kann jemand den effizientesten Weg vorschlagen, diese Überprüfung und Trimmung für jede Variable durchzuführen.

Ich könnte alle Variablen im Voraus trimmen, nachdem Sie überprüft haben, dass sie nicht null sind. oder testen Sie, ob sie null sind und wenn ja, übergeben Sie sie durch verschiedene Teststrings, um Fehler zu vermeiden, aber das bedeutet mehr Codezeilen und eine langsamere Ausführung des Codes.

Wenn jemand eine prägnante Möglichkeit hat, dies zu erreichen, wäre ich dankbar für den Vorschlag.

Antwort

0

Am Ende habe ich gerade bin, diese zu Beginn der Schleife

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

So ist es früh über die Kontrolle der Nullwerte, wenn nicht null trimmt sie und speichert sie zurück auf die Variable.

Verwandte Themen