inocertiv
Goto Top

PS Skript Hilfe

Hallo Zusammen,

ich habe ein kleines Problem. Ich bin blutiger Anfänger in Skripting. Ich kann PS Skripte lesen und anpassen, vom schreiben bin ich jedoch weit entfernt.
Ich beginne gerade zu lernen stehe aber aktuell vor einer Anfrage welche ich bis nächte Woche brauche. Vielleicht könnt Ihr mir ja helfen.

Ich brauche ein Skript welches ein DATUM aus einem LDAP Feld auslesen kann. (Womöglich mit einer if / else verzweigung).
Zwei Szenarien sollen daraus entstehen. Liegt das Datum im aktuellen oder in vergangenen Monat im aktuellen Jahr 2020 dann soll er mehrerre Anweisungen ausführen.
Liegt das Datum in der Zukunft also im Monat November oder in weiterer Zukunft dann soll er andere anweisungen ausführen.

Wichtig dabei wäre das er nicht 30 Tage hoch rechnet sondern wirklich nur den aktuellen Monat + Jahr honoriert.
Ich würde mich freuen wenn Ihr mit helfen könntet.
Ich würde natürlich auch hierfür bezahlen.

Danke!

Content-ID: 609907

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

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

146189
146189 03.10.2020 aktualisiert um 23:22:10 Uhr
Goto Top
Wie ist das Datum den in dem LDAP Feld denn aufgebaut (Format)?
Hier ein Beispiel für deine gewünschte Berechnung
https://tio.run/##NcpBCsIwEIXhfU8xFKHJIiXp3oXQbU8gLoIZm0DaSDMiIt6mN@nB4o ...

LDAP Feld kannst du so auslesen
(Get-Aduser MaxMuster -Properties "deinLdapFeld").deinLdapFeld  
Einfach damit die Variable füllen und in ein Datumsobject umwandeln.
Fürs Umwandeln gibt es Funktionen wie [Datetime]::Parse() oder auch
[Datetime]::ParseExact()
inocertiv
inocertiv 03.10.2020 um 23:21:27 Uhr
Goto Top
Das Format sollte so sein = 01.09.2020
146189
146189 03.10.2020 aktualisiert um 23:43:56 Uhr
Goto Top
Na dann
$ldapDatum = (Get-Aduser MaxMuster -Properties "deinLdapFeld").deinLdapFeld  
$d = [datetime]::minvalue
if([datetime]::TryParse($ldapDatum,[cultureinfo]"de",'None',[ref]$d)){  
    if($d -ge (get-date -Day 1).Date.AddMonths(1)){
       "nächster Monat"  
    }elseif($d -ge (get-date -Day 1).Date.AddMonths(-1)){
       "dieser Monat oder letzter Monat"  
    }else{
        "Noch älter"  
    }
  }else{
    Write-Error -Message "Ungültiges Datum."  
}
SeaStorm
SeaStorm 03.10.2020 aktualisiert um 23:35:31 Uhr
Goto Top
Hi

unter der Annahme das du das Datumsfeld nachher als String aus dem AD bekommst:

[string] $ADdatum = "03.08.2020"  
[datetime]$datum = [datetime]::parseexact($ADDatum, 'dd.MM.yyyy', $null)  

Write-Host "Monat: $($datum.Month)"  

If($datum.Year -eq (Get-Date).Year -and
 ($datum.Month -eq (Get-Date).Month -or $datum.Month -eq (Get-Date).Month-1) ){ 
    Write-Host "Ist im Zeitraum aktueller oder letzter Monat "  
    } else {
            If($datum -ge (Get-Date -Day 1).AddMonths(1)){
                Write-Host "Ist mindestens im nächsten Monat"  
                }
        }

[EDIT] Angepasst um den "Ist in der Zukunft" Part