Metaverse¶
The metaverse is the central identity store in JIM. These cmdlets manage the metaverse schema (object types and attributes), query Metaverse Objects, and review pending deletions.
Object Types¶
Get-JIMMetaverseObjectType¶
Retrieves Metaverse Object Type definitions. Returns all object types by default, or a specific type by ID or name.
Syntax¶
# List (default)
Get-JIMMetaverseObjectType [-IncludeChildObjects] [-Page <int>] [-PageSize <int>]
# ById
Get-JIMMetaverseObjectType -Id <int> [-IncludeChildObjects]
# ByName
Get-JIMMetaverseObjectType -Name <string> [-IncludeChildObjects]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
int |
No | The ID of a specific object type to retrieve | |
Name |
string |
No | The name of a specific object type to retrieve | |
IncludeChildObjects |
switch |
No | false |
Include child object counts for each object type |
Page |
int |
No | 1 |
Page number for paginated results |
PageSize |
int |
No | 100 |
Number of results per page (maximum 1000) |
Output¶
Object type definitions including ID, name, and optionally child object counts.
Examples¶
Get-JIMMetaverseObjectType -Name "Person" -IncludeChildObjects
Set-JIMMetaverseObjectType¶
Modifies an existing Metaverse Object Type. Use this cmdlet to configure automatic deletion behaviour for Metaverse Objects of a given type.
Syntax¶
# ById (default)
Set-JIMMetaverseObjectType -Id <int> [-DeletionRule <string>] [-DeletionGracePeriod <TimeSpan>]
[-DeletionTriggerConnectedSystemIds <int[]>] [-PassThru]
# ByName
Set-JIMMetaverseObjectType -Name <string> [-DeletionRule <string>] [-DeletionGracePeriod <TimeSpan>]
[-DeletionTriggerConnectedSystemIds <int[]>] [-PassThru]
# ByInputObject
Set-JIMMetaverseObjectType -InputObject <object> [-DeletionRule <string>] [-DeletionGracePeriod <TimeSpan>]
[-DeletionTriggerConnectedSystemIds <int[]>] [-PassThru]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
int |
Yes (ById) | The ID of the object type to modify. Accepts pipeline input. | |
Name |
string |
Yes (ByName) | The name of the object type to modify | |
InputObject |
object |
Yes (ByInputObject) | An object type object from the pipeline | |
DeletionRule |
string |
No | The deletion rule to apply. Valid values: Manual, WhenLastConnectorDisconnected, WhenAuthoritativeSourceDisconnected |
|
DeletionGracePeriod |
TimeSpan |
No | Grace period before a pending deletion is executed | |
DeletionTriggerConnectedSystemIds |
int[] |
No | Connected System IDs that trigger deletion when disconnected | |
PassThru |
switch |
No | false |
Return the updated object type |
ShouldProcess
This cmdlet supports ShouldProcess with a Medium impact level. Use -WhatIf to preview changes or -Confirm to require confirmation.
Deletion rules
The deletion rule controls how Metaverse Objects of this type are automatically cleaned up:
- Manual
Objects are never automatically deleted; an administrator must delete them explicitly - WhenLastConnectorDisconnected
The object is marked for deletion when all connectors are removed - WhenAuthoritativeSourceDisconnected
The object is marked for deletion when the authoritative source connector is removed
Output¶
When -PassThru is specified, returns the updated object type definition. Otherwise, no output.
Examples¶
Set-JIMMetaverseObjectType -Name "Person" -DeletionRule WhenLastConnectorDisconnected
Get-JIMMetaverseObjectType -Name "Group" | Set-JIMMetaverseObjectType -DeletionRule WhenAuthoritativeSourceDisconnected -DeletionGracePeriod "30.00:00:00" -PassThru
Set-JIMMetaverseObjectType -Id 1 -DeletionRule WhenAuthoritativeSourceDisconnected -DeletionTriggerConnectedSystemIds @(3, 7)
New-JIMMetaverseObjectType¶
Creates a new Metaverse Object Type. Use this when the built-in User, Group, and other seeded types do not fit; for example, modelling Device, Contractor, or ServiceAccount identities. The new type is created with BuiltIn = false so it can be removed via Reset-JIMSystem or by administrators in the UI later.
Syntax¶
New-JIMMetaverseObjectType -Name <string> -PluralName <string>
[-Icon <string>] [-AttributeIds <int[]>]
[-DeletionRule <string>] [-DeletionGracePeriod <TimeSpan>]
[-DeletionTriggerConnectedSystemIds <int[]>]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Name |
string |
Yes | Singular name of the new type. Must be unique. | |
PluralName |
string |
Yes | Plural name of the new type. Must be unique. | |
Icon |
string |
No | Optional MudBlazor icon name to associate with the type in the UI. | |
AttributeIds |
int[] |
No | Optional array of existing Metaverse attribute IDs to associate with this type at creation time. Attributes can also be associated later. | |
DeletionRule |
string |
No | Manual |
Controls when objects of this type are automatically deleted. Valid values: Manual, WhenLastConnectorDisconnected, WhenAuthoritativeSourceDisconnected. |
DeletionGracePeriod |
TimeSpan |
No | Grace period before deletion is executed. Use [TimeSpan]::Zero for immediate deletion. Ignored when DeletionRule is Manual. |
|
DeletionTriggerConnectedSystemIds |
int[] |
No | Required when DeletionRule is WhenAuthoritativeSourceDisconnected. The Connected System IDs whose disconnect triggers deletion. |
ShouldProcess
This cmdlet supports ShouldProcess with a Medium impact level. Use -WhatIf to preview changes or -Confirm to require confirmation.
Output¶
The newly created object type definition.
Examples¶
New-JIMMetaverseObjectType -Name "Contractor" -PluralName "Contractors" -AttributeIds 1,2,3
New-JIMMetaverseObjectType -Name "ServiceAccount" -PluralName "ServiceAccounts" `
-DeletionRule WhenAuthoritativeSourceDisconnected `
-DeletionTriggerConnectedSystemIds 5 `
-DeletionGracePeriod ([TimeSpan]::FromDays(7))
Attributes¶
Get-JIMMetaverseAttribute¶
Retrieves metaverse attribute definitions. Returns all attributes by default, or a specific attribute by ID or name.
Syntax¶
# List (default)
Get-JIMMetaverseAttribute [-Page <int>] [-PageSize <int>]
# ById
Get-JIMMetaverseAttribute -Id <int>
# ByName
Get-JIMMetaverseAttribute -Name <string>
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
int |
No | The ID of a specific attribute to retrieve. Accepts pipeline input. | |
Name |
string |
No | The name of a specific attribute to retrieve | |
Page |
int |
No | 1 |
Page number for paginated results |
PageSize |
int |
No | 100 |
Number of results per page (maximum 1000) |
Output¶
Attribute definitions including ID, name, type, and plurality.
Examples¶
New-JIMMetaverseAttribute¶
Creates a new metaverse attribute definition.
Syntax¶
New-JIMMetaverseAttribute -Name <string> -Type <string> [-AttributePlurality <string>]
[-ObjectTypeIds <int[]>]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Name |
string |
Yes | The name of the new attribute | |
Type |
string |
Yes | The data type. Valid values: Text, Integer, LongNumber, DateTime, Boolean, Reference, Guid, Binary |
|
AttributePlurality |
string |
No | SingleValued |
Whether the attribute holds one or many values. Valid values: SingleValued, MultiValued |
ObjectTypeIds |
int[] |
No | Object type IDs to associate the attribute with |
ShouldProcess
This cmdlet supports ShouldProcess with a Medium impact level. Use -WhatIf to preview changes or -Confirm to require confirmation.
Output¶
The newly created attribute definition.
Examples¶
New-JIMMetaverseAttribute -Name "Direct Reports" -Type Reference -AttributePlurality MultiValued
$personType = Get-JIMMetaverseObjectType -Name "Person"
$groupType = Get-JIMMetaverseObjectType -Name "Group"
New-JIMMetaverseAttribute -Name "Department" -Type Text -ObjectTypeIds @($personType.Id, $groupType.Id)
Set-JIMMetaverseAttribute¶
Modifies an existing metaverse attribute definition.
Syntax¶
# ById (default)
Set-JIMMetaverseAttribute -Id <int> [-Name <string>] [-Type <string>] [-AttributePlurality <string>]
[-ObjectTypeIds <int[]>] [-PassThru]
# ByInputObject
Set-JIMMetaverseAttribute -InputObject <object> [-Name <string>] [-Type <string>]
[-AttributePlurality <string>] [-ObjectTypeIds <int[]>] [-PassThru]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
int |
Yes (ById) | The ID of the attribute to modify. Accepts pipeline input. | |
InputObject |
object |
Yes (ByInputObject) | An attribute object from the pipeline | |
Name |
string |
No | The new name for the attribute | |
Type |
string |
No | The new data type. Valid values: Text, Integer, DateTime, Boolean, Reference, Guid, Binary |
|
AttributePlurality |
string |
No | The new plurality. Valid values: SingleValued, MultiValued |
|
ObjectTypeIds |
int[] |
No | Object type IDs to associate with; replaces existing associations | |
PassThru |
switch |
No | false |
Return the updated attribute definition |
ShouldProcess
This cmdlet supports ShouldProcess with a Medium impact level. Use -WhatIf to preview changes or -Confirm to require confirmation.
Output¶
When -PassThru is specified, returns the updated attribute definition. Otherwise, no output.
Examples¶
Get-JIMMetaverseAttribute -Name "Proxy Addresses" | Set-JIMMetaverseAttribute -AttributePlurality MultiValued
Remove-JIMMetaverseAttribute¶
Deletes a metaverse attribute definition. Built-in attributes cannot be deleted.
Syntax¶
# ById (default)
Remove-JIMMetaverseAttribute -Id <int> [-Force]
# ByInputObject
Remove-JIMMetaverseAttribute -InputObject <object> [-Force]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
int |
Yes (ById) | The ID of the attribute to delete. Accepts pipeline input. | |
InputObject |
object |
Yes (ByInputObject) | An attribute object from the pipeline | |
Force |
switch |
No | false |
Suppress confirmation prompts |
ShouldProcess
This cmdlet supports ShouldProcess with a High impact level. You will be prompted for confirmation unless -Force is specified.
Note
Built-in attributes cannot be deleted. Attempting to remove a built-in attribute will result in an error.
Output¶
No output on success.
Examples¶
Get-JIMMetaverseAttribute -Name "Legacy Code" | Remove-JIMMetaverseAttribute -Force
Objects¶
Search-JIMMetaverseObject¶
Searches for Metaverse Objects using a predefined search definition, returning lightweight headers with only the attributes configured in the search. Optimised for fast responses at scale (100k+ objects).
Use this cmdlet for fast list views and searches. Use Get-JIMMetaverseObject when you need full object details or custom attribute selection.
Syntax¶
# List (default)
Search-JIMMetaverseObject -PredefinedSearchUri <string> [-Search <string>] [-SortBy <string>]
[-SortDirection <string>] [-Page <int>] [-PageSize <int>]
# ListAll
Search-JIMMetaverseObject -PredefinedSearchUri <string> [-Search <string>] [-SortBy <string>]
[-SortDirection <string>] [-PageSize <int>] -All
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
PredefinedSearchUri |
string |
Yes | URI identifier of the predefined search (e.g. users, groups) |
|
Search |
string |
No | Search query to filter across all string attribute values (case-insensitive, partial match) | |
SortBy |
string |
No | Attribute name to sort results by (defaults to creation date) | |
SortDirection |
string |
No | desc |
Sort direction: asc or desc |
All |
switch |
No | false |
Automatically paginate through all results |
Page |
int |
No | 1 |
Page number for paginated results (cannot be used with -All) |
PageSize |
int |
No | 100 |
Number of items per page (maximum 100) |
Output¶
Lightweight Metaverse Object headers including ID, display name, object type, and the attributes defined in the predefined search.
Examples¶
Search-JIMMetaverseObject -PredefinedSearchUri "groups" -SortBy "Display Name" -SortDirection asc
Get-JIMMetaverseObject¶
Retrieves Metaverse Objects. Supports searching by ID, object type, attribute values, and wildcard patterns.
Syntax¶
# List (default)
Get-JIMMetaverseObject [-ObjectTypeId <int>] [-ObjectTypeName <string>] [-Search <string>]
[-AttributeName <string> -AttributeValue <string>] [-Attributes <string[]>]
[-Page <int>] [-PageSize <int>]
# ById
Get-JIMMetaverseObject -Id <guid> [-Attributes <string[]>]
# ListAll
Get-JIMMetaverseObject [-ObjectTypeId <int>] [-ObjectTypeName <string>] [-Search <string>]
[-AttributeName <string> -AttributeValue <string>] [-Attributes <string[]>] -All
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
guid |
Yes (ById) | The GUID of a specific Metaverse Object. Accepts pipeline input. | |
ObjectTypeId |
int |
No | Filter by object type ID | |
ObjectTypeName |
string |
No | Filter by object type name | |
Search |
string |
No | Search string; supports wildcards | |
AttributeName |
string |
No | Attribute name to search on; requires AttributeValue |
|
AttributeValue |
string |
No | Attribute value to match; requires AttributeName |
|
Attributes |
string[] |
No | Attribute names to include in results; use "*" to return all attributes |
|
All |
switch |
No | false |
Automatically paginate through all results |
Page |
int |
No | 1 |
Page number for paginated results |
PageSize |
int |
No | 100 |
Number of results per page (maximum 100) |
Output¶
Metaverse Objects including their ID, object type, and requested attributes.
Examples¶
Get-JIMMetaverseObject -Id "a1b2c3d4-e5f6-7890-abcd-ef1234567890" -Attributes "*"
Get-JIMMetaverseObject -ObjectTypeName "Person" -Search "Smith*" -Attributes @("Display Name", "Mail")
Get-JIMMetaverseObject -AttributeName "Employee Id" -AttributeValue "12345" -Attributes @("Display Name", "Department")
Get-JIMMetaverseObject -ObjectTypeName "Group" -All -Attributes @("Display Name", "Member")
Get-JIMMetaverseObjectChangeHistory¶
Retrieves the change history for a Metaverse Object. Each record carries the initiator, Synchronisation Rule, and Run Profile context, plus the per-attribute value changes, ordered by change time descending (most recent first).
Syntax¶
# Page (default)
Get-JIMMetaverseObjectChangeHistory -Id <guid> [-Page <int>] [-PageSize <int>]
# All
Get-JIMMetaverseObjectChangeHistory -Id <guid> -All [-PageSize <int>]
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Id |
guid |
Yes | Metaverse Object identifier. Accepts pipeline input by property name. | |
All |
switch |
No | $false |
Automatically paginates through all results. Cannot be used with -Page. |
Page |
int |
No | 1 |
Page number for paginated results. Cannot be used with -All. |
PageSize |
int |
No | 50 |
Number of items per page. Maximum: 100. |
Output¶
Returns one PSCustomObject per change record, including the initiator, Synchronisation Rule, Run Profile context, and per-attribute value changes.
Examples¶
Get-JIMMetaverseObjectChangeHistory -Id "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Get-JIMMetaverseObjectChangeHistory -Id "a1b2c3d4-e5f6-7890-abcd-ef1234567890" -All
Get-JIMMetaverseObject -ObjectTypeName "Group" -Search "Project-Alpha" |
Get-JIMMetaverseObjectChangeHistory -All
Pending Deletions¶
Get-JIMPendingDeletion¶
Retrieves Metaverse Objects that are pending deletion. Supports listing individual items, returning a count, or a summary breakdown by object type.
Syntax¶
# List (default)
Get-JIMPendingDeletion [-ObjectTypeId <int>] [-Page <int>] [-PageSize <int>]
# Count
Get-JIMPendingDeletion [-ObjectTypeId <int>] -Count
# Summary
Get-JIMPendingDeletion -Summary
Parameters¶
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
ObjectTypeId |
int |
No | Filter by object type ID (List and Count parameter sets only) | |
Page |
int |
No | 1 |
Page number for paginated results (List parameter set only) |
PageSize |
int |
No | 25 |
Number of results per page, maximum 100 (List parameter set only) |
Count |
switch |
No | false |
Return only the total count of pending deletions |
Summary |
switch |
No | false |
Return a summary breakdown by object type |
Output¶
Depending on the parameter set:
- List: pending deletion items including object details and scheduled deletion date
- Count: total number of pending deletions as an integer
- Summary: breakdown of pending deletion counts grouped by object type
Examples¶
$personType = Get-JIMMetaverseObjectType -Name "Person"
Get-JIMPendingDeletion -ObjectTypeId $personType.Id -PageSize 50
See also¶
- Metaverse: object types, attributes, objects, and pending deletions
- Synchronisation Rules
- Connected Systems