Hinweise zur Ausgabe von Meldungen
Auf Servern dürfen niemals die VB.Net-Funktionen Msgbox und Inputbox verwendet werden. Nutzen Sie die Funktionen VID_Write2Log, RaiseMessage oder AppData.Instance.RaiseMessage.
Beispiele für Ausgaben in die Protokolldatei des One Identity Manager Service entnehmen Sie den Skriptbeispielen auf dem Installationsmedium im Verzeichnis QBM\dvd\AddOn\SDK\ScriptSamples.
Hinweise zur Verwendung von Datumswerten
-
Ist explizit kein Datum angegeben, wird intern das Datum 30.12.1899 verwendet. Dies ist bei Wertevergleichen zu beachten, beispielsweise bei der Verwendung in Berichten.
Beispiel: Ausdruck für die Darstellung der Datenspalten in Berichten
{IIF(Person.ExitDate.ToString() = "12/30/1899 12:00:00 AM","-",Person.ExitDate)}
-
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)
Hinweise zur Verwendung von Windows PowerShell Skripten
Beispiele für die Syntax und die Verwendung von Windows PowerShell Skripten im One Identity Manager finden Sie unter https://github.com/OneIdentity/IdentityManager.PoSh. Beachten Sie die dort beschriebenen Installationsvoraussetzungen und Hinweise.
Standardmäßig versucht das Windows PowerShell Modul, alle referenzierten DLLs von einer gültigen One Identity Manager Installation zu laden. In der Standardinstallation wird der One Identity Manager installiert unter:
Verwendung der $-Notation
Die $-Notation wird im verwendet, um auf die Eigenschaften von Objekten zuzugreifen.
Syntax
$<Definition>:<Datentyp>{<Format>}$
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.
Als Datentypen sind zulässig:
Binary
Bool
Byte
Date
Decimal
Double
Int
Long
Short
String (Standard)
Text
Die Formatangabe ist optional. Wenn das Format angegeben wird, ist der Zieltyp des Ausdrucks ein String. Wird das Format nicht angegeben, ist es der angegebene Datentyp.
Die Formatangaben entsprechen den Formatzeichenfolgen der Funktion String.Format für die einzelnen Typen. Ausführliche Informationen zu den Formatzeichenfolgen finden Sie unter https://docs.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting#format-string-component.
Beispiele:
$MaxValidDays:Int{000}$
ergibt für den Wert 42 die Ausgabe "042"
$XDateUpdated:Date{t}$
ergibt "11:16"
Hinweis: 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)")
Detaillierte Informationen zum Thema