lichtknopf
Goto Top

Set-aduser from csv

Guten Morgen liebe Community,

Ich möchte das unser HR wenn es für einen Mitarbeiter Attribut änderung gibt, eine CSV datei füttert und ich Sie importiere.
ich weis dieses Thema gabs ein paar mal hier schon jedoch seh ich meinen Fehler in dem Skript nicht, da ich auch noch ein powershell Neuling bin.
Mein Skript läuft zwar ohne Fehler durch, jedoch ohne eine Änderungen an den Attributen. Out-GridView wird mir auch nicht angezeigt.

Danke schon mal für die mühe
                                              
$UsersCSV = Import-CSV "C:\Users\admini\Desktop\HRChngFinal.csv"  
$Results = @()
 
ForEach ($User in $UsersCSV) {
    $Username = $User.username.trim() 
    $Number = $User.mobile.trim()
    $company = $user.company.trim()
    $department = $user.department.trim()
    $ipphone = $user.ipphone.trim()
    $title = $user.title.trim()
    $UserDetails = $null
    $UserCheck = $null
 
    Try{
        $UserDetails = Get-ADUser -Identity $Username -Properties Mobile,company,department,ipphone,title
    }
    Catch{
        $_.Exception.Message
        Continue
    }
 
    If ($UserDetails.'Mobile,department') {  
        Try{
            Set-ADUser -Identity $username -replace @{ 'Mobile' = $($Number);"company" = $($company); "department" = $($Department);"ipphone" = $($ipphone); "title" = $($title) }   
            $UserCheck = Get-ADUser -Identity $Username -Properties mobile,company, department, ipphone,l,title -ErrorAction ignore 
            If ($UserCheck) {
                $Object = New-Object PSObject -Property ([ordered]@{ 
     
                    "User name"               = $Username  
                    "Mobile"                  = $Mobile   
                    "company"                 = $company  
                    "Department"              = $department  
                    "ipphone"                 = $ipphone  
                    "title"                   = $title  
                          
                })
  
                $Results += $Object
            }
        }
        Catch{
            $_.Exception.Message
            Continue
        }
    }      
}
 
$Results |Out-GridView
   

Content-ID: 590432

Url: https://administrator.de/contentid/590432

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

SlainteMhath
SlainteMhath 24.07.2020 um 10:01:59 Uhr
Goto Top
Moin,

bitte Codetags verweden, so ist as nicht lesbar.

lg,
Slainte
Lichtknopf
Lichtknopf 24.07.2020 um 10:07:57 Uhr
Goto Top
Danke für den Hinweis, gerade geändert.
colinardo
Lösung colinardo 24.07.2020 aktualisiert um 10:25:16 Uhr
Goto Top
Servus.
If ($UserDetails.'Mobile,department') {
Was erwartest du davon ? face-wink Diese Eigenschaft hat das User-Objekt nicht, ergo keine Änderung am Userobjekt (if Bedingung greift nicht), ergo keine Ergebnisse am $results Objekt, ergo kein Grid-View weil $results leer.

Kaffee rüber reich..., oder war's doch wieder der Freitag? face-wink

Grüße Uwe

btw. pass auf wenn du Felder auf einen leeren String änderst bzw. löschst, das geht mit Replace nicht, in diesen Fällen muss man -Clear benutzen. Insgesamt musst du bei dem Skript noch eine Menge nacharbeiten wenn es wasserdicht sein soll, ...
Lichtknopf
Lichtknopf 24.07.2020 aktualisiert um 10:25:57 Uhr
Goto Top
Meine Fresse bin ich Blind, ich danke dir.
Einen Schönen Haitag und ein erholsames Rochenende.