vendredi 7 septembre 2018

PowerShell If-Else Statement Skipping the Else Part

This is a fairly straight-forward PowerShell script to import a .csv file, use the headers as variables, then write values to the AD accounts for the various users.

For some reason, the script is skipping the entire ELSE statement. I don't know if I have brackets in the wrong place, or what's going on. Can someone take a look for me? I can provide the .csv file if needed, but I really think this is just a case of the script being off a bit.

Any input and assistance is greatly appreciated.

You can DM me to get an actual copy of this file.

    #-----------------------------------------------------------------------
    #Section:  Add headers to Delta 158 file.
    #Operator will place two generic files in "D:\generic"

    $delta158 = get-childitem D:\generic -Filter generic-2* | select -exp name  #Necessary line because get-content will not accept wild cards.
    get-content -LiteralPath D:\generic\headers158.csv, D:\generic\$delta158 | out-file -encoding ascii D:\generic\hr158Delta.pip
    #-----------------------------------------------------------------------
    #Move error log files to archive
    Move-Item -Path D:\generic\158ErrorLog* -Destination D:\generic\archive\


    #Place a timestamp.
    function Get-TimeStamp {
       return "[{0:MM/dd/yyyy} {0:HH:mm:ss}]" -f (Get-Date) }
    Get-TimeStamp

    $tdate = get-date -UFormat %m-%d-%y    #Today's date stored in format '06-25-2018'.  One required field in delta file requires this format.

    # Import AD Module             
    Import-Module ActiveDirectory

    # cd generic:            

    write-Host 'Updating AD Attributes.  Please wait...' -NoNewline -ForegroundColor Green -BackgroundColor Black           
    # Import .csv into variable $users.   

    $users = Import-Csv -Path "D:\generic\hr158Delta.pip" -Delimiter '|'

    foreach ($user in $users) {
    $transactionDate = get-date $user."Transaction Date"
    $emplstatus = $user."Employee Status"
    $jobaction = $user."Job Action"
    $jobactionreason = $user."Job Action Reason"
    $usr = $user."User ID"
    $usremplid = $user."Employee ID"
    $ext1 = $user."Hire Date"
    $ext3 = $user."Employee Type Description"
    $ext3Else = $user."Employee Type"
    $ext4 = $user."Employee Status"
    $ext5 = $user."Job Code"
    $ext9 = $user."Employee"
    $ext9Else = $user."Employee Class"
    $ext14 = $user."Badge Number1"
    $fwrdaddr = $user."Facility Code"
    $roomnum = $user."Facility Description"
    $preflang = $user."Cost Center/Department"
    $mgrid = $user."Manager User ID"
    $empnum = $user."Employee ID"
    $jobtitle = $user."Job Code Description"
    $workphone = $user."Work Phone"
    Write-Output $transactionDate

    if($transactionDate -le (get-date $tdate))                              
      {
       if(($emplstatus -eq "A") -or ($emplstatus -eq "L") -or ($emplstatus -eq "P") -or ($emplstatus -eq "S") -or ($emplstatus -eq "W"))
         {
        if($user."Job Indicator" -eq "Y")                                  
          {                                                                

      #Search in specified domain and update existing attributes.  
      #$usr = $user."User ID"  #Moved from local to foreach scope variable.
      Write-Output $usr

      If ($ext1 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute1
        Set-ADUser  $usr -Add @{extensionAttribute1 = $ext1}
        }
      If ($ext3 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute3
        Set-ADUser  $usr -Add @{extensionAttribute3 = $ext3}
        }
      If ($ext3 -le 1) {
        Set-ADUser  $usr -Clear extensionAttribute3
        Set-ADUser  $usr -Add @{extensionAttribute3 = $ext3Else}
        }
      If ($ext4 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute4
        Set-ADUser  $usr -Add @{extensionAttribute4 = $ext4}
        }
      If ($ext5 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute5
        Set-ADUser  $usr -Add @{extensionAttribute5 = $ext5}
        }
      If ($ext9 -eq "EMP") {
        Set-ADUser  $usr -Clear extensionAttribute9
        Set-ADUser  $usr -Add @{extensionAttribute9 = $ext9}
        }
      If ($ext9 -ne "EMP") {
        Set-ADUser  $usr -Clear extensionAttribute9
        Set-ADUser  $usr -Add @{extensionAttribute9 = $ext9Else}
        }
      If ($ext14 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute14
        Set-ADUser  $usr -Add @{extensionAttribute14 = $ext14}
        }
      If ($fwrdaddr -gt 1) {
        Set-ADUser  $usr -Clear forwardingAddress
        Set-ADUser  $usr -Add @{forwardingAddress = $fwrdaddr}
      }
      If ($roomnum -gt 1) {
        Set-ADUser  $usr -Clear roomNumber
        Set-ADUser  $usr -Add @{roomNumber = $roomnum}
      }
      If ($preflang -gt 1) {
        Set-ADUser  $usr -Clear preferredLanguage
        Set-ADUser  $usr -Add @{preferredLanguage = $preflang}
        }
      If ($empnum -gt 1) {
        Set-ADUser  $usr -Clear employeeNumber
        Set-ADUser  $usr -Add @{employeeNumber = $empnum}
        }
      If ($jobtitle -gt 1) {
        Set-ADUser  $usr -Clear title
        Set-ADUser  $usr -Add @{title = $jobtitle}
        }
      If ($workphone -gt 1) {
        Set-ADUser  $usr -Clear telephoneNumber
        Set-ADUser  $usr -Add @{telephoneNumber = $workphone}
        }
      If ($mgrid -gt 1) {
        Set-ADUser  $usr -Clear manager
        Set-ADUser  $usr -manager $mgrid
      }

      }  #Bracket for Third If Statment  
      }  #Bracket for Second If Statement  
      }  #Bracket for first If Statment   

      Else {
            if(($jobaction -eq "HIR") -or (($jobaction -eq "ADD") -and ($jobactionreason -eq "ADD")))  #I don't see any "ADDs" in the Job Action Reason column of 158 file.
            {
              if($usr -eq $null)
                {

                    $byEmplid = get-aduser -filter {(employeeNumber -Like $usremplid)}
                    $usr = $byEmplid.SamAccountName
                }
       Write-Output $usr

      If ($ext1 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute1
        Set-ADUser  $usr -Add @{extensionAttribute1 = $ext1}
        }
      If ($ext3 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute3
        Set-ADUser  $usr -Add @{extensionAttribute3 = $ext3}
        }
      If ($ext3 -le 1) {
        Set-ADUser  $usr -Clear extensionAttribute3
        Set-ADUser  $usr -Add @{extensionAttribute3 = $ext3Else}
        }
      If ($ext4 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute4
        Set-ADUser  $usr -Add @{extensionAttribute4 = $ext4}
        }
      If ($ext5 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute5
        Set-ADUser  $usr -Add @{extensionAttribute5 = $ext5}
        }
      If ($ext9 -eq "EMP") {
        Set-ADUser  $usr -Clear extensionAttribute9
        Set-ADUser  $usr -Add @{extensionAttribute9 = $ext9}
        }
      If ($ext9 -ne "EMP") {
        Set-ADUser  $usr -Clear extensionAttribute9
        Set-ADUser  $usr -Add @{extensionAttribute9 = $ext9Else}
        }
      If ($ext14 -gt 1) {
        Set-ADUser  $usr -Clear extensionAttribute14
        Set-ADUser  $usr -Add @{extensionAttribute14 = $ext14}
        }
      If ($fwrdaddr -gt 1) {
        Set-ADUser  $usr -Clear forwardingAddress
        Set-ADUser  $usr -Add @{forwardingAddress = $fwrdaddr}
      }
      If ($roomnum -gt 1) {
        Set-ADUser  $usr -Clear roomNumber
        Set-ADUser  $usr -Add @{roomNumber = $roomnum}
      }
      If ($preflang -gt 1) {
        Set-ADUser  $usr -Clear preferredLanguage
        Set-ADUser  $usr -Add @{preferredLanguage = $preflang}
        }
      If ($empnum -gt 1) {
        Set-ADUser  $usr -Clear employeeNumber
        Set-ADUser  $usr -Add @{employeeNumber = $empnum}
        }
      If ($jobtitle -gt 1) {
        Set-ADUser  $usr -Clear title
        Set-ADUser  $usr -Add @{title = $jobtitle}
        }
      If ($workphone -gt 1) {
        Set-ADUser  $usr -Clear telephoneNumber
        Set-ADUser  $usr -Add @{telephoneNumber = $workphone}
        }
      If ($mgrid -gt 1) {
        Set-ADUser  $usr -Clear manager
        Set-ADUser  $usr -manager $mgrid
      }
            }
           }
     }
    Write-Host 'HR158 Sync Complete!' -ForegroundColor Green -BackgroundColor Black

    #Place a timestamp.
    function Get-TimeStamp {
       return "[{0:MM/dd/yyyy} {0:HH:mm:ss}]" -f (Get-Date) }
    Get-TimeStamp
    #-----------------------------------------------------------------------
    #Section:  Move original Delta 158 file to archive.
    start-sleep -s 10
    Move-Item -Path D:\generic\$delta158 -Destination D:\generic\archive\

    $file = "D:\generic\158ErrorLog" + (Get-Date).ToString("s").Replace(":","-") + ".txt"
    New-Item $file -ItemType file

    $errorlog = get-childitem D:\generic -Filter 158errorlog* | select -exp name

    #Error logging
    $error | out-file -Encoding ascii D:\generic\$errorlog -append

    start-sleep -s 10

    Move-Item -Path D:\generic\158ErrorLog* -Destination D:\generic\archive\
    #$error
    #$Error[0].InvocationInfo
    #-----------------------------------------------------------------------

Aucun commentaire:

Enregistrer un commentaire