Advertisement
Guest User

Untitled

a guest
May 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Uitlijnen naar rechts functie om later toe te wijzen aan collum Badgenummer.
  2. Function right {
  3.                 Param(
  4.                                [Parameter(Mandatory=$true)][String]$Text,
  5.                                [Parameter(Mandatory=$true)][Int]$Length
  6.                 )
  7.                 return $Text.SubString($Text.length - $Length)
  8. }
  9.  
  10. #Functie Speciale tekens
  11. function Simplify-String{
  12.                 param([string]$s)
  13.                 $s = $s -replace "ç", "c"
  14.                 $s = $s -replace " ", ""    
  15.                 $s = $s -replace "é", "e"
  16.                 $s = $s -replace "è", "e"
  17.                 $s = $s -replace "ë", "e"
  18.                 $s = $s -replace "ê", "e"
  19.                 $s = $s -replace "à", "a"
  20.                 $s = $s -replace "á", "a"
  21.                 $s = $s -replace "ä", "a"
  22.                 $s = $s -replace "â", "a"
  23.                 $s = $s -replace "ù", "u"
  24.                 $s = $s -replace "ú", "u"
  25.                 $s = $s -replace "ü", "u"
  26.                 $s = $s -replace "û", "u"                
  27.                 $s = $s -replace "ó", "o"
  28.                 $s = $s -replace "ò", "o"
  29.                 $s = $s -replace "ö", "o"
  30.                 $s = $s -replace "ô", "o"
  31.                 $s = $s -replace "õ", "o"
  32.                 $s = $s -replace "í", "i"
  33.                 $s = $s -replace "ì", "i"
  34.                 $s = $s -replace "ï", "i"
  35.                 $s = $s -replace "î", "i"  
  36.                 $s = $s -replace "ÿ", "y"
  37.                 $s = $s -replace "ý", "y"
  38.                 $s = $s -replace "ñ", "n"
  39.                 $s = $s -replace "ß", "ss"
  40.                 $s = $s -replace "'", ""  
  41.                 $s = $s -replace "@", ""
  42.                 return $s
  43. }
  44. #export-modulemember -function Simplify-String
  45. # ---------------------------------------------------------------------
  46. echo "AD Users uitlezen"
  47. # adusers is een list en bevat de account namen van de users
  48. # ---------------------------------------------------------------------
  49. $ADUsers = get-aduser -Filter *  -Properties extensionAttribute1,msExchShadowProxyAddresses -SearchBase "OU=gebruikers,OU=Sint-Truiden,DC=sint-truiden,DC=be"
  50. $msExch=@()
  51. foreach($ad in $ADUsers){
  52.     $msExch+=$ad.msExchShadowProxyAddresses
  53. }
  54.  
  55. echo "lees SyntegroUsers uit CSV"
  56. $f = "C:\ps\michiel\badge_info.csv"
  57. $SyntegroUsers = Get-Content $f | Select -skip 9 | ConvertFrom-Csv -Delimiter "," #inlezen CSV als tekst \\ skip eerste 9
  58.  
  59. # ---------------------------------------------------------------------
  60. echo "filter vervallen badges eruit"
  61. #alle rijen waarvan de bedrijfscode niet gelijk is aan 104 worden verwijderd uit de lijst
  62. #als de stopdatum en datum uit dienst kleiner is  dan de huidige datum worden deze verwijderd uit de list
  63. #alle badgnenummers van  non-relevante voornamen worden verwijderd uit de list
  64. # ---------------------------------------------------------------------
  65. $SyntegroUsers = $SyntegroUsers |
  66.     where { ([datetime]::parseexact($_.Stopdatum, 'yyyy-MM-dd', $null)) -gt [datetime]::Now } |    # niet vervallen badges
  67.     where { ([datetime]::parseexact($_."Datum uit dienst", 'yyyy-MM-dd', $null)) -gt [datetime]::Now }  |   # niet vervallen badges
  68.     where { ( $_.Bedrijfscode -eq 104  ) } |
  69.     where { ( $_.Voornaam -ne 'werfbadge' ) } |
  70.     where { ( $_.Voornaam -ne 'huurder' ) } |
  71.     where { ( $_.Voornaam -ne 'externe' ) } |
  72.     where { ( $_.Voornaam -ne 'syntegro' ) } |
  73.     where { ( $_.Voornaam -ne 'ford' ) } |     
  74.     where { ( $_.Voornaam -ne 'mercedes' ) } |     
  75.     where { ( $_.Voornaam -ne 'jeep' ) } |     
  76.     where { ( $_.Voornaam -ne 'electrische' ) } |
  77.     where { ( $_.Voornaam -ne 'vrijwilligers' ) } |
  78.     where { ( $_.Voornaam -ne 'gidsen' ) } |
  79.     where { ( $_.Voornaam -ne 'leveranciers' ) } |
  80.     where { ( $_.Voornaam -ne 'aanvraag' ) } |
  81.     where { ( $_.Voornaam -ne 'fuifbegeleider' ) } |
  82.     where { ( $_.Voornaam -ne 'schermclub' ) } |
  83.     where { ( $_.Voornaam -ne 'stagiairs' ) }
  84.    
  85. # ---------------------------------------------------------------------
  86. echo "reformat alle velden in SyntegroUsers"
  87. # format van Badge Nummer ----> met gebruik van functie "right"
  88. # ---------------------------------------------------------------------
  89. foreach ($su in $SyntegroUsers)
  90. {
  91.     $su.Badgenummer = right "0000000000$($su.Badgenummer)" 8
  92.     $su.Voornaam=Simplify-String $su.Voornaam.ToLower().Split(" ")[0]
  93.     $su.Achternaam=Simplify-String $su.Achternaam.ToLower().Trim()
  94.     #"vervang gebruikersnamen die uit nummers bestaan door voornaam.achternaam"
  95.  
  96.     if($su.Gebruikersnaam -match ".*\d+.*" )
  97.     {
  98.     $su.Gebruikersnaam = $Su.Voornaam+"."+$su.Achternaam
  99.     }
  100.     else{
  101.         $su.Gebruikersnaam = Simplify-String $su.Gebruikersnaam.ToLower().Trim()
  102.     }
  103.     # we doen dit omdat een SamAccountNaam maximum 20 karakters mag bevatten
  104.     if($su.Gebruikersnaam.Length -gt 20){
  105.     $su.Gebruikersnaam = Simplify-String $su.Gebruikersnaam.ToLower().Trim().Substring(0,20)
  106.     }
  107. }
  108.  
  109. # ---------------------------------------------------------------------
  110. echo "sorteer SyntegroUsers"
  111. #elke unieke gebruiker toevoegen aan $list met alleen unieke gebruikersnamen en grootste badge nummer.
  112. #hier sorteer ik de list syntegroUsers op badgenummer van groot naar klein
  113. # ---------------------------------------------------------------------
  114. $SyntegroUsers = $SyntegroUsers | sort -Property Badgenummer -Descending
  115. # list users is gesorteerd op gebruikersnaam uniek
  116. $users = $SyntegroUsers | sort -Property Gebruikersnaam -Unique
  117.  
  118. # ---------------------------------------------------------------------
  119. echo "verwijder dubbele badges en gebruik enkel laatste"
  120. # ---------------------------------------------------------------------
  121. $list = @()
  122. foreach ($user in $users)
  123. {
  124.     # bij dubbele gebruikersnamen word de eersta gebruikersnaam gepakt(dus die met hoogste badgenummer,
  125.     $badge = New-Object -TypeName PSObject ($SyntegroUsers | where {$_.Gebruikersnaam -eq $user.Gebruikersnaam })[0]
  126.     $list += $badge
  127. }
  128. $SyntegroUsers = $list
  129.  
  130. # ---------------------------------------------------------------------
  131. echo "zoek SyntegroUsers in AD"
  132. # ---------------------------------------------------------------------
  133. #
  134. $inad = @()
  135. $overigeInSyn=@()
  136. $nietinad = @()
  137.  
  138. # zoek gebruikersnaam in AD
  139. foreach($su in $SyntegroUsers)
  140. {
  141.     $adu = ($ADUsers.where({$_.SamAccountName -eq $su.Gebruikersnaam })[0]).SamAccountName
  142.     if ($adu.length -gt 0)
  143.     {
  144.        $inad+=$adu
  145.     } else {
  146.        $nietinad+=$ad
  147.     }
  148. }
  149.  
  150. $inad.Count
  151. $nietinad.Count
  152. $SyntegroUsers.Count
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement