19
19
Homepage: https://github.com/kayasax/EasyPIM
20
20
#>
21
21
function Set-PIMGroupPolicy {
22
- [CmdletBinding (DefaultParameterSetName = ' Default' , SupportsShouldProcess = $true )]
22
+ [CmdletBinding (DefaultParameterSetName = ' Default' , SupportsShouldProcess = $true )]
23
23
[OutputType ([bool ])]
24
24
param (
25
25
[Parameter (Position = 0 , Mandatory = $true )]
@@ -53,7 +53,29 @@ function Set-PIMGroupPolicy {
53
53
[System.String []]
54
54
# Activation requirement
55
55
$ActivationRequirement ,
56
-
56
+ [Parameter (HelpMessage = " Accepted values: 'None' or any combination of these options (Case SENSITIVE): 'Justification, 'MultiFactorAuthentication'" )]
57
+ [ValidateScript ({
58
+ # accepted values: "None","Justification", "MultiFactorAuthentication"
59
+ # WARNING: options are CASE SENSITIVE
60
+ $script :valid = $true
61
+ $acceptedValues = @ (" None" , " Justification" , " MultiFactorAuthentication" )
62
+ $_ | ForEach-Object { if (! ( $acceptedValues -Ccontains $_ )) { $script :valid = $false } }
63
+ return $script :valid
64
+ })]
65
+ [System.String []]
66
+ # Active assignment requirement
67
+ $ActiveAssignmentRequirement ,
68
+
69
+ [Parameter ()]
70
+ [Bool ]
71
+ # Is authentication context required? ($true|$false)
72
+ $AuthenticationContext_Enabled ,
73
+
74
+ [Parameter ()]
75
+ [String ]
76
+ # Authentication context value? (ex c1)
77
+ $AuthenticationContext_Value ,
78
+
57
79
[Parameter ()]
58
80
[Bool ]
59
81
# Is approval required to activate a role? ($true|$false)
@@ -147,7 +169,7 @@ function Set-PIMGroupPolicy {
147
169
148
170
log " Function Set-PIMGroupPolicy is starting with parameters: $p " - noEcho
149
171
150
- $script :tenantID = $tenantID
172
+ $script :tenantID = $tenantID
151
173
152
174
# at least one approver required if approval is enable
153
175
# todo chech if a parameterset would be better
@@ -164,6 +186,15 @@ function Set-PIMGroupPolicy {
164
186
if ($PSBoundParameters.Keys.Contains (' ActivationRequirement' )) {
165
187
$rules += Set-ActivationRequirement $ActivationRequirement - EntraRole
166
188
}
189
+ if ($PSBoundParameters.Keys.Contains (' ActiveAssignmentRequirement' )) {
190
+ $rules += Set-ActiveAssignmentRequirement $ActiveAssignmentRequirement - EntraRole
191
+ }
192
+ if ($PSBoundParameters.Keys.Contains (' AuthenticationContext_Enabled' )) {
193
+ if (! ($PSBoundParameters.Keys.Contains (' AuthenticationContext_Value' ))) {
194
+ $AuthenticationContext_Value = $null
195
+ }
196
+ $rules += Set-AuthenticationContext $AuthenticationContext_Enabled $AuthenticationContext_Value - entraRole
197
+ }
167
198
168
199
# Approval and approvers
169
200
if ( ($PSBoundParameters.Keys.Contains (' ApprovalRequired' )) -or ($PSBoundParameters.Keys.Contains (' Approvers' ))) {
@@ -176,7 +207,7 @@ function Set-PIMGroupPolicy {
176
207
write-verbose " Maximum Eligibiliy duration from curent config: $ ( $script :config.MaximumEligibleAssignmentDuration ) "
177
208
if (! ( $PSBoundParameters.ContainsKey (' MaximumEligibilityDuration' ))) { $MaximumEligibilityDuration = $script :config.MaximumEligibleAssignmentDuration }
178
209
if (! ( $PSBoundParameters.ContainsKey (' AllowPermanentEligibility' ))) { $AllowPermanentEligibility = $script :config.AllowPermanentEligibleAssignment }
179
- if ( ($false -eq $AllowPermanentEligibility ) -and ( ($MaximumEligibilityDuration -eq " " ) -or ($null -eq $MaximumEligibilityDuration ) )){
210
+ if ( ($false -eq $AllowPermanentEligibility ) -and ( ($MaximumEligibilityDuration -eq " " ) -or ($null -eq $MaximumEligibilityDuration ) )) {
180
211
throw " ERROR: you requested the assignement to expire but the maximum duration is not defined, please use the MaximumEligibilityDuration parameter"
181
212
}
182
213
$rules += Set-EligibilityAssignment $MaximumEligibilityDuration $AllowPermanentEligibility - entraRole
@@ -188,7 +219,7 @@ function Set-PIMGroupPolicy {
188
219
write-verbose " Maximum Active duration from curent config: $ ( $script :config.MaximumActiveAssignmentDuration ) "
189
220
if (! ( $PSBoundParameters.ContainsKey (' MaximumActiveAssignmentDuration' ))) { $MaximumActiveAssignmentDuration = $script :config.MaximumActiveAssignmentDuration }
190
221
if (! ( $PSBoundParameters.ContainsKey (' AllowPermanentActiveAssignment' ))) { $AllowPermanentActiveAssignment = $script :config.AllowPermanentActiveAssignment }
191
- if ( ($false -eq $AllowPermanentActiveAssignment ) -and ( ($MaximumActiveAssignmentDuration -eq " " ) -or ($null -eq $MaximumActiveAssignmentDuration ) )){
222
+ if ( ($false -eq $AllowPermanentActiveAssignment ) -and ( ($MaximumActiveAssignmentDuration -eq " " ) -or ($null -eq $MaximumActiveAssignmentDuration ) )) {
192
223
throw " ERROR: you requested the assignement to expire but the maximum duration is not defined, please use the MaximumActiveAssignmentDuration parameter"
193
224
}
194
225
$rules += Set-ActiveAssignment $MaximumActiveAssignmentDuration $AllowPermanentActiveAssignment - entraRole
@@ -226,7 +257,7 @@ function Set-PIMGroupPolicy {
226
257
# Notif Active Assignment Approvers
227
258
if ($PSBoundParameters.Keys.Contains (' Notification_ActiveAssignment_Approver' )) {
228
259
$rules += Set-Notification_ActiveAssignment_Approver $Notification_ActiveAssignment_Approver - entraRole
229
- }
260
+ }
230
261
231
262
# Notification Activation alert
232
263
if ($PSBoundParameters.Keys.Contains (' Notification_Activation_Alert' )) {
@@ -250,7 +281,7 @@ function Set-PIMGroupPolicy {
250
281
251
282
# Patching the policy
252
283
if ($PSCmdlet.ShouldProcess ($_ , " Udpdating policy" )) {
253
- $null = Update-EntraRolePolicy $script :config.policyID $allrules
284
+ $null = Update-EntraRolePolicy $script :config.policyID $allrules
254
285
}
255
286
256
287
}
0 commit comments