Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AF SDK Reference

PIIdentities Class

  • Last UpdatedNov 18, 2025
  • 7 minute read
PIIdentities Class
The PIIdentities collection represents the available PIIdentity objects on a particular PIServer.

Inheritance Hierarchy

SystemObject
  OSIsoft.AF.PIPIIdentities

Namespace:  OSIsoft.AF.PI
Assembly:  OSIsoft.AFSDK (in OSIsoft.AFSDK.dll) Version: 3.1.1.1182

Syntax

public sealed class PIIdentities : IList<PIIdentity>, 
	ICollection<PIIdentity>, IEnumerable<PIIdentity>, IEnumerable, 
	IList, ICollection
Public NotInheritable Class PIIdentities
	Implements IList(Of PIIdentity), ICollection(Of PIIdentity), 
	IEnumerable(Of PIIdentity), IEnumerable, IList, ICollection

Dim instance As PIIdentities
public ref class PIIdentities sealed : IList<PIIdentity^>, 
	ICollection<PIIdentity^>, IEnumerable<PIIdentity^>, IEnumerable, 
	IList, ICollection
[<SealedAttribute>]
type PIIdentities =  
    class
        interface IList<PIIdentity>
        interface ICollection<PIIdentity>
        interface IEnumerable<PIIdentity>
        interface IEnumerable
        interface IList
        interface ICollection
    end

The PIIdentities type exposes the following members.

Properties

  NameDescription
Public property
Count
Gets the number of items actually contained in the collection.
Public property
ItemInt32
Gets or sets the item at the specified index.
Public property
ItemString
Returns the specified object from the collection by name.
Public property
Server
The PIServer for this PIIdentities collection.

Methods

  NameDescription
Public method
Add
Creates a new PIIdentity with the passed in name.
Public method
Contains(String)
This method determines whether the collection contains a specific item referenced by name.
Public method
Contains(PIIdentity)
This method determines whether the collection contains a specific item.
Public method
CopyTo
Copies the entire collection to a compatible one-dimensional Array, starting at the specified index of the target array.
Public method
Equals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public method
GetEnumerator
Returns an enumerator that iterates through the collection.
Public method
GetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public method
GetType
Gets the Type of the current instance.
(Inherited from Object.)
Public method
IndexOf
Searches for the specified object and returns the zero-based index of the first occurrence within the entire collection.
Public method
Refresh
Refresh the collection by loading from the PIServer.
Public method
Remove(String)
Removes a PIIdentity from the PI Data Archive by name
Public method
Remove(PIIdentity)
Removes a PIIdentity from the PI Data Archive
Public method
ToString
Returns a string that represents the current object.
(Inherited from Object.)

Extension Methods

  NameDescription
Public Extension MethodCode example
ChunkedByPIIdentity
This extension method breaks up search results into chunks to make it easier to page through and process IEnumerableT collections in chunks.
(Defined by AFSDKExtension.)

Exceptions

ExceptionCondition
PIVersionNotSupportedException This exception will be generated if PIServer does not support PIIdentity.

Remarks

The PIIdentities collection consist of the PI Identities, PI Users and PI Groups that are configured on a PIServer. PI Identities are used to define authentication methods to the server. Once authenticated, access permissions on PI Data Archive objects define authorization against all three types of identities: PI Identities, PI Users, and PI Groups.

Examples

// Get the PIIdentities from the PIServer on the local computer
PISystems myPISystems = new PISystems();
PISystem myPISystem = myPISystems.DefaultPISystem;
PIServer myPIServer = PIServer.FindPIServer(myPISystem, piServerName);

// Display information about each PIIdentity and its properties
PIIdentities identities = myPIServer.Identities;
Console.WriteLine("Found {0} identities", identities.Count);
foreach (PIIdentity identity in identities)
{
    Console.WriteLine(identity.Name);
    Console.WriteLine("  IdentityType: {0}", identity.IdentityType);
    Console.WriteLine("  Description: {0}", identity.Description);
    Console.WriteLine("  AllowExplicitLogin: {0}", identity.AllowExplicitLogin);
    Console.WriteLine("  AllowMappings: {0}", identity.AllowMappings);
    Console.WriteLine("  AllowTrusts: {0}", identity.AllowTrusts);
    Console.WriteLine("  IsEnabled: {0}", identity.IsEnabled);
    Console.WriteLine();
}

// Add an identity of PIIdentity type, if it does not yet exist.
string newIdName = "PIIdentityTestExample";
PIIdentity newId;
if (!identities.Contains(newIdName))
{
    // Note that adding or editing an identity requires 'CheckIn' in order to commit it to the PI Data Archive.
    newId = identities.Add(newIdName, PIIdentityType.PIIdentity);
    newId.CheckIn();
}
else 
    newId = identities[newIdName];

Console.WriteLine(newId.Name);
Console.WriteLine("  IdentityType: {0}", newId.IdentityType);
Console.WriteLine("  Description: {0}", newId.Description);
Console.WriteLine("  AllowExplicitLogin: {0}", newId.AllowExplicitLogin);
Console.WriteLine("  AllowMappings: {0}", newId.AllowMappings);
Console.WriteLine("  AllowTrusts: {0}", newId.AllowTrusts);
Console.WriteLine("  IsEnabled: {0}", newId.IsEnabled);
Console.WriteLine();

// Edit an identity.
newId.Description = "This is a PIIdentity for Test Example";
newId.CheckIn();

Console.WriteLine(newId.Name);
Console.WriteLine("  Description: {0}", newId.Description);
Console.WriteLine();

// Delete an identity. 
// Note that the 'Remove' call will be directly committed to the PI Data Archive.
identities.Remove(newId);
' Get the PIIdentities from the PIServer on the local computer
Dim myPISystems As New PISystems
Dim myPISystem As PISystem = myPISystems.DefaultPISystem
Dim myPIServer As PIServer = PIServer.FindPIServer(myPISystem, piServerName)

' Display information about each PIIdentity and its properties
Dim identities As PIIdentities = myPIServer.Identities
Console.WriteLine("Found {0} identities", identities.Count)
For Each identity As PIIdentity In identities
    Console.WriteLine(identity.Name)
    Console.WriteLine("  IdentityType: {0}", identity.IdentityType)
    Console.WriteLine("  Description: {0}", identity.Description)
    Console.WriteLine("  AllowExplicitLogin: {0}", identity.AllowExplicitLogin)
    Console.WriteLine("  AllowMappings: {0}", identity.AllowMappings)
    Console.WriteLine("  AllowTrusts: {0}", identity.AllowTrusts)
    Console.WriteLine("  IsEnabled: {0}", identity.IsEnabled)
    Console.WriteLine()
Next

' Add an identity of PIIdentity type, if it does not yet exist.
Dim newIdName As String = "PIIdentityTestExample"
Dim newId As PIIdentity
If (Not identities.Contains(newIdName)) Then
    ' Note that adding or editing an identity requires 'CheckIn' in order to commit it to the PI Data Archive.
    newId = identities.Add(newIdName, PIIdentityType.PIIdentity)
    newId.CheckIn()
Else
    newId = identities(newIdName)
End If

Console.WriteLine(newId.Name)
Console.WriteLine("  IdentityType: {0}", newId.IdentityType)
Console.WriteLine("  Description: {0}", newId.Description)
Console.WriteLine("  AllowExplicitLogin: {0}", newId.AllowExplicitLogin)
Console.WriteLine("  AllowMappings: {0}", newId.AllowMappings)
Console.WriteLine("  AllowTrusts: {0}", newId.AllowTrusts)
Console.WriteLine("  IsEnabled: {0}", newId.IsEnabled)
Console.WriteLine()

' Edit an identity.
newId.Description = "This is a PIIdentity for Test Example"
newId.CheckIn()

Console.WriteLine(newId.Name)
Console.WriteLine("  Description: {0}", newId.Description)
Console.WriteLine()

' Delete an identity. 
' Note that the 'Remove' call will be directly committed to the PI Data Archive.
identities.Remove(newId)

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

Version Information

AFSDK

Supported in: 3.1.1, 3.1.0, 3.0.2, 3.0.1, 3.0.0, 2.10.11, 2.10.5, 2.10.0, 2.10, 2.9.5, 2.9, 2.8.5, 2.8, 2.7.5, 2.7, 2.6

See Also

TitleResults for “How to create a CRG?”Also Available in