Jump to content

Mildred

Members
  • Gesamte Inhalte

    9
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

Fortschritt von Mildred

Apprentice

Apprentice (3/14)

  • Erste Antwort
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei
  • 1 Jahre dabei

Neueste Abzeichen

0

Reputation in der Community

  1. Soweit klar. Erklärt mich gerne für Blö..... Aber genau da liegt jetzt mein Problem, ich weiß nicht wie
  2. Darüber bin ich sehr dankbar. Nur sehe ich mit meinen Grundkenntnissen nicht das aktuelle Problem in meinem Skript
  3. Hallo cj_berlin, ich hab die CSV Importiert, habe aber das Problem, das das Datum generell umgeschrieben wird. Mein Skript dazu sieht wie folgt aus: Import-Csv $StatusFile $existingEntry = $UserFromCSV.Where({$_.sAMAccountName -eq $ADUser.SamAccountName}) if ($existingEntry.count -gt 0) { $LastReminderDays = ((Get-Date) - $existingEntry[0].EMailversand).Days if ($LastReminderDays -gt 365) { $UsersWithOldPasswordFromAD += [PSCustomObject]@{ 'EMailVersand' = Get-Date -UFormat '%d.%m.%Y' } } } else {$UsersWithOldPasswordFromAD += [PSCustomObject]@{ 'sAMAccountName' = $NutzerName } } $UsersWithOldPasswordFromAD | Export-Csv -Path $StatusFile -NoTypeInformation
  4. Den Fehler habe ich gefunden, das es zumindest in der Anzeige passt. Und nun klappt es auch mit der CSV #!/usr/bin/env powershell Import-Module -Name ActiveDirectory #Variablen $TodayTime = Get-Date $Today = Get-Date -UFormat '%d.%m.%Y' $WarningLevel = 365 $UsersWithOldPasswordFromAD = New-Object -TypeName System.Collections.ArrayList $UsersWithOldPasswordFromFile = New-Object -TypeName System.Collections.ArrayList $FileArray = New-Object -TypeName System.Collections.ArrayList # PW Versandliste [String]$StatusFile = '//aa.own/NETLOGON/Passwort.csv' If (!(Test-Path -Path ('{0}' -f $StatusFile))) { New-Item -Path '//aa.own/NETLOGON' -Name 'Passwort.csv' -ItemType 'file' } #alle aktiven AD-User mit E-Mail-Adresse (außer Systembenutzer) $AllADUsers = Get-ADUser -Filter { Enabled -eq $True -and PasswordNeverExpires -eq $False -and Mail -like '*@aa.*' } -Properties PasswordLastSet,Mail #Berechnung des Kennwortalters ForEach ($ADUser in $AllADUsers) { $NutzerName = $ADUser.SamAccountName $null = $ADUser.Mail $PasswordLastSet = $ADUser.PasswordLastSet # Wenn Benutzer von Admins in der AD erstellt wurden, und das Initial-Passwort vom Benutzer noch nicht geändert wurde, dann ist PasswordLastSet nicht gesetzt (NULL) # In diesem Fall, setzten wir PasswordLastSet auf Heute, damit die Berechnung "0" ergibt If(! $PasswordLastSet) { $PasswordLastSet = $TodayTime } $PasswordAge = ($TodayTime-$PasswordLastSet).Days if ($PasswordAge -ge $WarningLevel) { $UsersWithOldPasswordFromAD += [PSCustomObject]@{ 'sAMAccountName' = $NutzerName 'E-MailVersand' = $Today } } } Write-Host $UsersWithOldPasswordFromAD | Export-Csv -Path $StatusFile -NoTypeInformation Aber jetzt fehlt mir folgendes. Wenn ich danach wieder die CSV einlese und mit deinen Tipps weiterbearbeite , habe ich nun folgenden Gedanken. Wenn ich das Skript ein 2. Mal durchlaufen lasse, überschreibt es mir doch das "alte" Datum oder?
  5. Da bekomme ich die User mit Datum angezeigt (wie es sein soll). aber mit unzähligen Wiederholungen. Nun versteh ich gar nichts mehr
  6. Auch eine Möglichkeit. Nur soll die Aufgabe auch dazu da sein, meine mühseelig erlernten PowerShell Grundkenntnisse praktisch anzuwenden. Nur stehe ich komplett auf dem Schlauch.
  7. Hallo Jan, grundsätzlich gebe ich dir Recht und die Mitarbeiter sind bei Kompromittierung angehalten sofort ihr Passwort zu ändern. Aber meine GL möchte, das trotz neuen BSI-IT-Grundschutz Kompendium, wo keine Passwörter mehr ablaufen sollten, die Kollegen jedes Jahr es doch ändern sollten. Und daran soll ich sie per Mail erinnern Vielen Dank für den Ansatz nur bekomme ich in der CSV diese Einträge: Count : 208 Length : 208 LongLength : 208 Rank : 1 SyncRoot : System.Object[] IsReadOnly : False IsFixedSize : True IsSynchronized : False Mit folgender Skriptzeile habe die CSV exportiert: export-csv -Path $StatusFile -InputObject $UsersWithOldPasswordFromAD
  8. Es geht mir nicht nur um das Ergänzen, sondern das die Datei, welche gespeichert wird mit den ausgelesenen Usern verglichen wird und wenn sie noch nicht drauf stehen mit einem E-Mailversanddatum versehen werden. Und somit bei einem erneuten durchlauf nicht überschrieben werden. Sondern erst nach einem weiteren Jahr.
  9. Hallo, ich bin neu im Administratorenbereich und erst recht was Skripten mit Powershell betrifft. Nach Einsteigernbüchern und einen Onlinegrundkurd habe ich folgende Aufgabe bekommen: Eine Info-E-Mail an die Benutzer senden , wenn ihr Kennwort ein Jahr alt geworden ist (ohne es zu ändern). Die E-Mail soll über das alter Informieren und die Benutzer darauf hinweisen, dass das Kennwort bitte zu ändern ist wenn es öffentlich bekannt wurde. Der Kennwortwechsel soll nicht erzwungen werden! Die Info soll immer zum Geburtstag des Kennwortes kommen, also auch bei zwei Jahre, drei Jahre, ... Das Auslesen und Berechnen des Kennwortalters klappt ganz gut mit folgendem Skript: Import-Module -Name ActiveDirectory #Variablen $TodayTime = Get-Date $null = Get-Date -UFormat '%d.%m.%Y' $WarningLevel = 365 $UsersWithOldPasswordFromAD = New-Object -TypeName System.Collections.ArrayList $UsersWithOldPasswordFromFile = New-Object -TypeName System.Collections.ArrayList $FileArray = New-Object -TypeName System.Collections.ArrayList # PW Versandliste [String]$StatusFile = '//abc.own/NETLOGON/Passwort.csv' If (!(Test-Path -Path ('{0}' -f $StatusFile))) { New-Item -Path '//abc.own/NETLOGON' -Name 'Passwort.csv' -ItemType 'file' } #alle aktiven AD-User mit E-Mail-Adresse (außer Systembenutzer) $AllADUsers = Get-ADUser -Filter { Enabled -eq $True -and PasswordNeverExpires -eq $False -and Mail -like '*@abc.*' } -Properties PasswordLastSet,Mail #Berechnung des Kennwortalters ForEach ($ADUser in $AllADUsers) { $NutzerName = $ADUser.SamAccountName $null = $ADUser.Mail $PasswordLastSet = $ADUser.PasswordLastSet # Wenn Benutzer von Admins in der AD erstellt wurden, und das Initial-Passwort vom Benutzer noch nicht geändert wurde, dann ist PasswordLastSet nicht gesetzt (NULL) # In diesem Fall, setzten wir PasswordLastSet auf Heute, damit die Berechnung "0" ergibt If(! $PasswordLastSet) { $PasswordLastSet = $TodayTime } $PasswordAge = ($TodayTime-$PasswordLastSet).Days if ($PasswordAge -ge $WarningLevel) { $UsersWithOldPasswordFromAD += $ADUser.SamAccountName } } Wo ich jetzt aber scheitere ist diese User in Datei schreiben, wenn diese noch nicht drin stehen, und wenn sie drin stehen mit dem Datum zu vergleichen, wann sie die letzte Mail bekommen haben. Da diese Skript jeden Tag laufen soll und wir die User nicht zu bombadieren wollen. Mein Ansatz dafür ist # Datei mit historischen Daten einlesen foreach($line in (Get-Content $StatusFile2)) { $FileArray += $line } foreach ($ADUser in $UsersWithOldPasswordFromAD) { foreach ($line in $FileArray) { #$FileUser = Import-Csv "$Statusfile2" -Header name #$FileDate = Import-Csv "$Statusfile2" -Header datum if($ADUser -ne $FileArray.name) { Write-Host "$ADUser steht drin" } Wenn jemand mir auf die Sprünge helfen kann?
×
×
  • Neu erstellen...