/
Get-VdcIdentityAttribute.ps1
114 lines (82 loc) · 3.12 KB
/
Get-VdcIdentityAttribute.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
function Get-VdcIdentityAttribute {
<#
.SYNOPSIS
Get attribute values for TLSPDC identity objects
.DESCRIPTION
Get attribute values for TLSPDC identity objects.
.PARAMETER ID
The id that represents the user or group. Use Find-VdcIdentity to get the id.
.PARAMETER Attribute
Retrieve identity attribute values for the users and groups.
Common user attributes include Group Membership, Name, Internet Email Address, Given Name, and Surname.
.PARAMETER VenafiSession
Authentication for the function.
The value defaults to the script session object $VenafiSession created by New-VenafiSession.
A TLSPDC token can also be provided.
If providing a TLSPDC token, an environment variable named VDC_SERVER must also be set.
.INPUTS
ID
.OUTPUTS
PSCustomObject with the properties Identity and Attribute
.EXAMPLE
Get-VdcIdentityAttribute -IdentityId 'AD+blah:{1234567890olikujyhtgrfedwsqa}'
Get basic attributes
.EXAMPLE
Get-VdcIdentityAttribute -IdentityId 'AD+blah:{1234567890olikujyhtgrfedwsqa}' -Attribute 'Surname'
Get specific attribute for user
.LINK
https://docs.venafi.com/Docs/current/TopNav/Content/SDK/WebSDK/r-SDK-POST-Identity-Validate.php
.LINK
https://docs.venafi.com/Docs/current/TopNav/Content/SDK/WebSDK/r-SDK-POST-Identity-Readattribute.php
#>
[CmdletBinding()]
[Alias('Get-TppIdentityAttribute')]
param (
[Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
[Alias('PrefixedUniversalId', 'Contact', 'IdentityId')]
[string[]] $ID,
[Parameter()]
[string[]] $Attribute,
[Parameter()]
[psobject] $VenafiSession
)
begin {
Test-VenafiSession -VenafiSession $VenafiSession -Platform 'VDC'
$params = @{
Method = 'Post'
UriLeaf = 'Identity/Validate'
Body = @{
'ID' = @{
PrefixedUniversal = 'placeholder'
}
}
}
if ( $PSBoundParameters.ContainsKey('Attribute') ) {
$params.UriLeaf = 'Identity/ReadAttribute'
$params.Body.Add('AttributeName', 'placeholder')
}
}
process {
foreach ( $thisId in $ID ) {
$params.Body.ID.PrefixedUniversal = $thisId
if ( $PSBoundParameters.ContainsKey('Attribute') ) {
$attribHash = @{ }
foreach ( $thisAttribute in $Attribute ) {
$params.Body.AttributeName = $thisAttribute
$response = Invoke-VenafiRestMethod @params
if ( $response.Attributes ) {
$attribHash.$thisAttribute = $response.Attributes[0]
}
}
$attribsOut = [PSCustomObject] $attribHash
} else {
$response = Invoke-VenafiRestMethod @params
$attribsOut = $response.Id
}
[PSCustomObject] @{
ID = $thisId
Attributes = $attribsOut
}
}
}
}