Hallo,
ich möchte gerne in meinem Script ein Fortschirttsbalken haben und was am ende des Vorgangs ausgibt :"Import durchgeführt".
Script:
#AD-Module importieren
Import-Module ActiveDirectory
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.DefaultExt = '.csv'
$dialog.Filter = 'CSV Datei|*.csv|All Files|*.*'
$dialog.FilterIndex = 0
$dialog.InitialDirectory = $home
$dialog.Multiselect = $false
$dialog.RestoreDirectory = $true
$dialog.Title = "Select a csv file"
$dialog.ValidateNames = $true
$dialog.ShowDialog()
$dialog.FileName
$script:ErrorActionPreference = "silentlyContinue"
#Eingabeaufforderung
#$Pfad = Read-Host "Bitte Pfad zur .CSV Datei angeben
#Beispiel: C:\users\Administrator\desktop\powershell\Export_cherwell_bearbeitet.csv"
#CSV-Datei importieren
$DatenSaetze = Import-Csv $dialog.FileName -UseCulture -Encoding UTF8
#Jeden Datensatz der CSV-Datei durchlaufen
ForEach ($DatenSatz in $DatenSaetze){
# Set-AdUser-Aufruf mit dem SamAccountName des derzeitigen CSV-Eintrags initieren.
$Kommando = "Set-AdUser $($Datensatz.samAccountName)"
# Für jeden CSV-Eintrag die entsprechenden Attribute durchlaufen
ForEach ($Attribut in (Get-Member -InputObject $DatenSatz -MemberType NoteProperty)){
$Wert = $DatenSatz.($Attribut.Name)
#Überprüfen, ob Wert nicht leer ist und nicht den SamAccountName enthält
if ($Wert -and ($Wert.Name -ne 'samAccountName')){
# Zuvor initierten Aufruf von Set-AdUser um entsprechende Werte erweitern
$Kommando+= " -$($Attribut.Name) '$Wert'"
}
}
#Inhalt von $Kommando mittels Invoke-Expression ausführen
Invoke-Expression $Kommando
Write-Progress -activity “Import wird ausgeführt..” -status “Status: ” -PercentComplete *
}