@@ -136,17 +136,18 @@ public List<PSRoleAssignment> FilterRoleAssignments(FilterRoleAssignmentsOptions
136
136
List < PSRoleAssignment > result = new List < PSRoleAssignment > ( ) ;
137
137
ListAssignmentsFilterParameters parameters = new ListAssignmentsFilterParameters ( ) ;
138
138
139
+ PSADObject adObject = null ;
139
140
if ( options . ADObjectFilter . HasFilter )
140
141
{
142
+ adObject = ActiveDirectoryClient . GetADObject ( options . ADObjectFilter ) ;
143
+ if ( adObject == null )
144
+ {
145
+ throw new KeyNotFoundException ( ProjectResources . PrincipalNotFound ) ;
146
+ }
147
+
141
148
// Filter first by principal
142
149
if ( options . ExpandPrincipalGroups )
143
150
{
144
- PSADObject adObject = ActiveDirectoryClient . GetADObject ( options . ADObjectFilter ) ;
145
- if ( adObject == null )
146
- {
147
- throw new KeyNotFoundException ( ProjectResources . PrincipalNotFound ) ;
148
- }
149
-
150
151
if ( ! ( adObject is PSADUser ) )
151
152
{
152
153
throw new InvalidOperationException ( ProjectResources . ExpandGroupsNotSupported ) ;
@@ -156,7 +157,7 @@ public List<PSRoleAssignment> FilterRoleAssignments(FilterRoleAssignmentsOptions
156
157
}
157
158
else
158
159
{
159
- parameters . PrincipalId = string . IsNullOrEmpty ( options . ADObjectFilter . Id ) ? ActiveDirectoryClient . GetObjectId ( options . ADObjectFilter ) : Guid . Parse ( options . ADObjectFilter . Id ) ;
160
+ parameters . PrincipalId = string . IsNullOrEmpty ( options . ADObjectFilter . Id ) ? adObject . Id : Guid . Parse ( options . ADObjectFilter . Id ) ;
160
161
}
161
162
162
163
result . AddRange ( AuthorizationManagementClient . RoleAssignments . List ( parameters )
@@ -190,7 +191,22 @@ public List<PSRoleAssignment> FilterRoleAssignments(FilterRoleAssignmentsOptions
190
191
{
191
192
// Get classic administrator access assignments
192
193
List < ClassicAdministrator > classicAdministrators = AuthorizationManagementClient . ClassicAdministrators . List ( ) . ClassicAdministrators . ToList ( ) ;
193
- List < PSRoleAssignment > classicAdministratorsAssignments = classicAdministrators . Select ( a => a . ToPSRoleAssignment ( currentSubscription ) ) . ToList ( ) ;
194
+ List < PSRoleAssignment > classicAdministratorsAssignments = classicAdministrators . Select ( a => a . ToPSRoleAssignment ( currentSubscription ) ) . ToList ( ) ;
195
+
196
+ // Filter by principal if provided
197
+ if ( options . ADObjectFilter . HasFilter )
198
+ {
199
+ if ( ! ( adObject is PSADUser ) )
200
+ {
201
+ throw new InvalidOperationException ( ProjectResources . IncludeClassicAdminsNotSupported ) ;
202
+ }
203
+
204
+ var userObject = adObject as PSADUser ;
205
+ classicAdministratorsAssignments = classicAdministratorsAssignments . Where ( c =>
206
+ c . DisplayName . Equals ( userObject . UserPrincipalName , StringComparison . OrdinalIgnoreCase ) ||
207
+ c . DisplayName . Equals ( userObject . Mail , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ;
208
+ }
209
+
194
210
result . AddRange ( classicAdministratorsAssignments ) ;
195
211
}
196
212
0 commit comments