Datumszeitwerte, wie beispielsweise Erstellungsdatum oder Änderungsdatum, werden in der Datenbank mit der jeweils aktuellen UTC vermerkt. Die Objektschicht wandelt diese Zeitinformationen beim Laden eines Objektes in die jeweils gültige Zeitzoneninformationen um. Der Anwender sieht also alle Werte in seiner lokalen Zeit. Beim Speichern eines Objektes werden die aktuellen Zeitzoneninformationen in UTC Zeitinformationen umgewandelt.
|
Hinweis: Die Verwendung von DateTime.Now in Skripten sollte kritisch geprüft werden. Um den Wert für den Anwender anzuzeigen sollte statt DateTime.Now besser DateTime.UTCNow verwendet werden. |
Es ist fehlerbehaftet, in Skripten Datumswerte in deutscher Notation vom Datentyp "String" in den Datentyp "DateTime" zu konvertieren:
Value = CDate("31.12.2014")
Dies führt immer dann zu Problemen, wenn das Skript in nicht-deutschen Systemen läuft. Im günstigsten Fall erhält man eine Fehlermeldung "Cast from string...to type Date is not valid.". Im ungünstigsten Fall wird das falsche Datum geliefert, da Monat und Tag vertauscht werden (aus dem 12.3.2014 wird der 3.12.2014).
Wenn möglich, sollte man in diesem Fall Zeichenkettenkonvertierungen vermeiden. Der Typ "DateTime" stellt für diesen Zweck verschiedene Konstruktoren zur Verfügung. Für das oben genannte Beispiel wäre das:
Value = new DateTime(2014, 12, 31)
Wenn trotzdem der Datentyp "String" verwendet werden soll, so ist die ISO-Notation des Datumswertes zu verwenden, da diese in allen Einstellungen korrekt umgewandelt wird:
Value = CDate("2014-12-31")
Value = CDate("2014-12-31 15:22:12")
Die komplizierte Variante ist die Angabe der zu benutzenden Kultur beziehungsweise die Angabe des Formats, in dem das Datum vorliegt:
Value = DateTime.Parse("31.12.2014", new CultureInfo("de-DE"))
Value = DateTime.ParseExact("31.12.2014", "dd.MM.yyyy", CultureInfo.InvariantCulture)
|
Hinweis: Die $-Notation wird im verwendet, um auf die Eigenschaften von Objekten zuzugreifen. Wenn Sie in Skripten ein "$"-Zeichen verwenden möchten, ohne das es den Zugriff auf einen Spaltennamen repräsentieren soll, dann müssen Sie dieses Zeichen durch Verdopplung maskieren. Beispiel: In Windows PowerShell Skripten ist statt theScript.AppendLine("foreach ($Domain in $Domains)") folgendes zu verwenden: theScript.AppendLine("foreach ($$Domain in $$Domains)") |
Bei Verwendung der $-Notation ist darauf zu achten, dass der Wert den korrekten Datentyp erhält. Die $-Notation liefert als Standard den Typ "String" zurück. Wenn ein anderer Datentyp angegeben wird, erfolgt eine Umwandlung intern mittels "ToString".
Als Datentypen sind zulässig:
Binary
Bool
Byte
Date
Decimal
Double
Int
Long
Short
String (Standard)
Text
$<Spaltenname>:<Datentyp>$
Der Anzeigename eines Active Directory Benutzers soll aus dem Vornamen und dem Nachnamen des Active Directory Benutzers gebildet werden. Die Bildungsregel auf ADSAccount.Displayname lautet:
If $Givenname$<>"" And $Surname$<>"" Then
Value = $Surname$ & " " & $Givenname$
ElseIf $Givenname$<>"" Then
Value = $Givenname$
ElseIf $Surname$<>"" then
Value = $Surname$
End If
Wird eine Person deaktiviert, so soll das Austrittsdatum der Person gesetzt werden. Die Bildungsregel auf Person.Exitdate lautet:
If $IsInActive:bool$ Then
Value = Date.Today
End If
Derzeit ist als Beziehung nur die Fremdschlüsselbeziehung zugelassen.
$FK(<Fremdschlüsselspalte>).<Spaltenname>:<Datentyp>$
Der Vorname eines Active Directory Benutzers soll aus dem Vornamen der zugeordneten Person gebildet werden. Die Bildungsregel auf ADSAccount.Givenname lautet:
Value = $FK(UID_Person).Firstname$
© 2022 One Identity LLC. ALL RIGHTS RESERVED. Feedback Terms of Use Privacy