Visual Basic .NET scripts usage
One Identity Manager scripts are written in VB.Net syntax, which allows all VB.Net functions to be used. The values to be edited are given as preprocessor instructions.
NOTE: You can find detailed examples for syntax and usage of scripts on the installation medium in the QBM\dvd\AddOn\SDK\ScriptSamples directory.
You can use scripts in:
-
Templates and formatting scripts (DialogColumn table)
-
Table scripts (DialogTable table)
-
Script library (DialogScript table)
-
Tasks (DialogMethod table)
-
Object definition selection scripts (DialogObject table)
-
Views selection scripts (DialogTable table)
-
Scripts to find the servers to carry out the process steps (Job table)
-
Process step parameters (Jobrunparameter table)
-
Process control notification (Job table)
-
Generating conditions for process steps and processes (Job and JobChain tables)
-
Process step and process pre-scripts (Job and JobChain tables)
-
Process information (Job, JobChain and JobEventgen table)
-
Mail templates (DialogRichMailBody table)
Notes on message output
You should never use the VB.Net Msgbox and Inputbox functions on servers. Use the VID_Write2Log, RaiseMessage, or AppData.Instance.RaiseMessage functions.
For examples of One Identity Manager Service log file output, see the script examples on the installation medium in the QBM\dvd\AddOn\SDK\ScriptSamples directory.
Notes on using date values
-
If no date is given, the date 12/30/1899 is used internally. Take this into account when values are compared, for example, when used in reports.
Example: Expression for displaying data columns in reports
{IIF(Person.ExitDate.ToString() = "12/30/1899 12:00:00 AM","-",Person.ExitDate)}
-
Time stamps, such as insert dates or modification dates, are stored in the database with the respective UTC. The object layer transforms this time data into the currently valid time zone data when an object is loaded. The user, therefore, sees all the values in local time. When an object is saved the current time zone data is transformed into UTC data.
NOTE: The use of DateTime.Now in scripts must be critically tested. It is better to use DateTime.UTCNow than DateTime.Now to display the value to users.
-
It is not recommended to convert date values in non-U.S. notation from the String data type to the DateTime data type in scripts:
Value = CDate("2014-12-31")
This always causes a problem if the script is running on a U.S. system. In the best case, you are sent an error message like "Cast from string...to type Date is not valid". In the worst case, the wrong date is returned as month and day are swapped (3.12.2014 becomes 12.3.2014).
If possible, you should avoid a string conversion altogether in this case. The DateTime type provides several constructors for this purpose. For the example above, that would be:
Value = new DateTime(2014, 12, 31)
However, if the data type String is to be used, the ISO date notation should be applied as this is converted correctly in all settings:
Value = CDate("2014-12-31")
Value = CDate("2014-12-31 15:22:12")
The complicated version is to input the language code format for the date:
Value = DateTime.Parse("12.31.2014", new CultureInfo("en-US"))
Value = DateTime.ParseExact("12.31.2014", "mm.dd.yyyy", CultureInfo.InvariantCulture)
Tips for using Windows PowerShell scripts
For examples of syntax and usage for Windows PowerShell scripts in One Identity Manager, see https://github.com/OneIdentity/IdentityManager.PoSh. Note the installation prerequisites and guidance given there.
By default, the Windows PowerShell module tries to load all referenced DLLs from a valid One Identity Manager installation. In the default installation, One Identity Manager is installed under: