Skip to content

Commit e616c7e

Browse files
Merge branch 'main' into enganga/Update-EntraInvitedUserSponsorsFromInvitedBy
2 parents f77f57b + 963e92f commit e616c7e

File tree

89 files changed

+3563
-1445
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+3563
-1445
lines changed

module/Entra/Microsoft.Entra/Applications/Get-EntraDeletedApplication.ps1

Lines changed: 83 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -5,126 +5,125 @@
55
function Get-EntraDeletedApplication {
66
[CmdletBinding(DefaultParameterSetName = 'GetQuery')]
77
param (
8-
9-
[Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
10-
[Alias("Limit")]
11-
[System.Nullable`1[System.Int32]] $Top,
12-
13-
[Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
8+
[Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "Filter to apply to the query.")]
149
[System.String] $Filter,
15-
16-
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
10+
11+
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "Retrieve all deleted applications.")]
1712
[switch] $All,
18-
19-
[Parameter(ParameterSetName = "GetVague", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
13+
14+
[Parameter(ParameterSetName = "GetVague", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "Search string to use for vague queries.")]
2015
[System.String] $SearchString,
21-
[Parameter(Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true)]
22-
[Alias("Select")]
16+
17+
[Alias('Id')]
18+
[Parameter(ParameterSetName = "GetById", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "Unique Application object ID to retrieve.")]
19+
[System.String] $ApplicationId,
20+
21+
[Alias('Limit')]
22+
[Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "Maximum number of results to return.")]
23+
[System.Nullable`1[System.Int32]] $Top,
24+
25+
[Alias('Select')]
26+
[Parameter(Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, HelpMessage = "Properties to include in the results.")]
2327
[System.String[]] $Property
2428
)
2529

26-
PROCESS {
30+
PROCESS {
2731
$params = @{}
2832
$customHeaders = New-EntraCustomHeaders -Command $MyInvocation.MyCommand
29-
$keysChanged = @{SearchString = "Filter"; ObjectId = "Id" }
33+
$keysChanged = @{ SearchString = "Filter" }
3034

31-
if ($null -ne $PSBoundParameters["SearchString"]) {
32-
$TmpValue = $PSBoundParameters["SearchString"]
33-
$Value = "displayName eq '$TmpValue' or startswith(displayName,'$TmpValue')"
34-
$params["Filter"] = $Value
35+
if ($null -ne $PSBoundParameters["ErrorAction"]) {
36+
$params["ErrorAction"] = $PSBoundParameters["ErrorAction"]
3537
}
36-
37-
if ($null -ne $PSBoundParameters["Filter"]) {
38-
$TmpValue = $PSBoundParameters["Filter"]
39-
foreach ($i in $keysChanged.GetEnumerator()) {
40-
$TmpValue = $TmpValue.Replace($i.Key, $i.Value)
41-
}
42-
$Value = $TmpValue
43-
$params["Filter"] = $Value
38+
if ($null -ne $PSBoundParameters["ApplicationId"]) {
39+
$params["DirectoryObjectId"] = $PSBoundParameters["ApplicationId"]
4440
}
45-
4641
if ($PSBoundParameters.ContainsKey("Verbose")) {
4742
$params["Verbose"] = $PSBoundParameters["Verbose"]
4843
}
49-
50-
if ($null -ne $PSBoundParameters["All"]) {
51-
if ($PSBoundParameters["All"]) {
52-
$params["All"] = $PSBoundParameters["All"]
53-
}
54-
}
55-
56-
if ($PSBoundParameters.ContainsKey("Debug")) {
57-
$params["Debug"] = $PSBoundParameters["Debug"]
44+
if ($null -ne $PSBoundParameters["OutVariable"]) {
45+
$params["OutVariable"] = $PSBoundParameters["OutVariable"]
5846
}
59-
60-
if ($PSBoundParameters.ContainsKey("Top")) {
61-
$params["Top"] = $PSBoundParameters["Top"]
47+
if ($null -ne $PSBoundParameters["InformationAction"]) {
48+
$params["InformationAction"] = $PSBoundParameters["InformationAction"]
6249
}
6350
if ($null -ne $PSBoundParameters["WarningVariable"]) {
6451
$params["WarningVariable"] = $PSBoundParameters["WarningVariable"]
6552
}
66-
if ($null -ne $PSBoundParameters["InformationVariable"]) {
67-
$params["InformationVariable"] = $PSBoundParameters["InformationVariable"]
68-
}
69-
if ($null -ne $PSBoundParameters["InformationAction"]) {
70-
$params["InformationAction"] = $PSBoundParameters["InformationAction"]
53+
if ($PSBoundParameters.ContainsKey("Debug")) {
54+
$params["Debug"] = $PSBoundParameters["Debug"]
7155
}
72-
if ($null -ne $PSBoundParameters["OutVariable"]) {
73-
$params["OutVariable"] = $PSBoundParameters["OutVariable"]
56+
if ($null -ne $PSBoundParameters["PipelineVariable"]) {
57+
$params["PipelineVariable"] = $PSBoundParameters["PipelineVariable"]
7458
}
75-
if ($null -ne $PSBoundParameters["OutBuffer"]) {
76-
$params["OutBuffer"] = $PSBoundParameters["OutBuffer"]
59+
if ($null -ne $PSBoundParameters["SearchString"]) {
60+
$TmpValue = $PSBoundParameters["SearchString"]
61+
$Value = "displayName eq '$TmpValue' or startsWith(displayName,'$TmpValue')"
62+
$params["Filter"] = $Value
7763
}
7864
if ($null -ne $PSBoundParameters["ErrorVariable"]) {
7965
$params["ErrorVariable"] = $PSBoundParameters["ErrorVariable"]
8066
}
81-
if ($null -ne $PSBoundParameters["PipelineVariable"]) {
82-
$params["PipelineVariable"] = $PSBoundParameters["PipelineVariable"]
67+
if ($null -ne $PSBoundParameters["Top"]) {
68+
$params["Top"] = $PSBoundParameters["Top"]
8369
}
84-
if ($null -ne $PSBoundParameters["ErrorAction"]) {
85-
$params["ErrorAction"] = $PSBoundParameters["ErrorAction"]
70+
if ($null -ne $PSBoundParameters["OutBuffer"]) {
71+
$params["OutBuffer"] = $PSBoundParameters["OutBuffer"]
72+
}
73+
if ($null -ne $PSBoundParameters["All"]) {
74+
if ($PSBoundParameters["All"]) {
75+
$params["All"] = $PSBoundParameters["All"]
76+
}
8677
}
8778
if ($null -ne $PSBoundParameters["WarningAction"]) {
8879
$params["WarningAction"] = $PSBoundParameters["WarningAction"]
8980
}
81+
if ($null -ne $PSBoundParameters["Filter"]) {
82+
$TmpValue = $PSBoundParameters["Filter"]
83+
foreach ($i in $keysChanged.GetEnumerator()) {
84+
$TmpValue = $TmpValue.Replace($i.Key, $i.Value)
85+
}
86+
$Value = $TmpValue
87+
$params["Filter"] = $Value
88+
}
89+
if ($null -ne $PSBoundParameters["InformationVariable"]) {
90+
$params["InformationVariable"] = $PSBoundParameters["InformationVariable"]
91+
}
9092
if ($null -ne $PSBoundParameters["Property"]) {
9193
$params["Property"] = $PSBoundParameters["Property"]
9294
}
93-
94-
Write-Debug("============================ TRANSFORMATIONS ============================")
95+
96+
# Debug logging for transformations
97+
Write-Debug "============================ TRANSFORMATIONS ============================"
9598
$params.Keys | ForEach-Object { "$_ : $($params[$_])" } | Write-Debug
96-
Write-Debug("=========================================================================`n")
97-
98-
$response = Get-MgDirectoryDeletedItemAsApplication @params -Headers $customHeaders
99-
100-
$response | ForEach-Object {
101-
if ($null -ne $_) {
102-
Add-Member -InputObject $_ -MemberType AliasProperty -Name ObjectId -Value Id
103-
104-
$propsToConvert = @(
105-
'AddIns', 'AppRoles', 'GroupMembershipClaims', 'IdentifierUris', 'Info',
106-
'IsDeviceOnlyAuthSupported', 'KeyCredentials', 'OptionalClaims',
107-
'ParentalControlSettings', 'PasswordCredentials', 'Api', 'PublicClient',
108-
'PublisherDomain', 'Web', 'RequiredResourceAccess')
109-
110-
foreach ($prop in $propsToConvert) {
111-
$value = $_.$prop | ConvertTo-Json -Depth 5 | ConvertFrom-Json
112-
$_ | Add-Member -MemberType NoteProperty -Name $prop -Value ($value) -Force
99+
Write-Debug "=========================================================================`n"
100+
101+
try {
102+
# Make the API call
103+
if ($PSBoundParameters.ContainsKey("All") -and $All) {
104+
$response = Get-MgDirectoryDeletedItemAsApplication @params -PageSize 999 -Headers $customHeaders
105+
}
106+
else {
107+
$response = Get-MgDirectoryDeletedItemAsApplication @params -Headers $customHeaders
108+
}
109+
110+
$response | ForEach-Object {
111+
if ($null -ne $_) {
112+
if ($null -ne $_.DeletedDateTime) {
113+
# Add DeletionAgeInDays property
114+
$deletionAgeInDays = (Get-Date) - ($_.DeletedDateTime)
115+
Add-Member -InputObject $_ -MemberType NoteProperty -Name DeletionAgeInDays -Value ($deletionAgeInDays.Days) -Force
116+
}
117+
113118
}
114-
115-
Add-Member -InputObject $_ -MemberType AliasProperty -Name AppLogoUrl -Value Logo
116-
Add-Member -InputObject $_ -MemberType AliasProperty -Name InformationalUrls -Value Info
117-
Add-Member -InputObject $_ -MemberType AliasProperty -Name HomePage -Value Web.HomePageUrl
118-
Add-Member -InputObject $_ -MemberType AliasProperty -Name LogoutUrl -Value Web.LogoutUrl
119-
Add-Member -InputObject $_ -MemberType AliasProperty -Name ReplyUrls -Value Web.RedirectUris
120-
Add-Member -InputObject $_ -MemberType AliasProperty -Name KnownClientApplications -Value Api.KnownClientApplications
121-
Add-Member -InputObject $_ -MemberType AliasProperty -Name PreAuthorizedApplications -Value Api.PreAuthorizedApplications
122-
Add-Member -InputObject $_ -MemberType AliasProperty -Name Oauth2AllowImplicitFlow -Value Web.Oauth2AllowImplicitFlow
123119
}
124-
120+
121+
return $response
122+
}
123+
catch {
124+
# Handle any errors that occur during the API call
125+
Write-Error "An error occurred while retrieving the deleted applications: $_"
125126
}
126-
127-
$response
128-
}
127+
}
129128
}
130129

module/Entra/Microsoft.Entra/Applications/Get-EntraDeletedServicePrincipal.ps1

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ function Get-EntraDeletedServicePrincipal {
5959
}
6060
if ($null -ne $PSBoundParameters["SearchString"]) {
6161
$TmpValue = $PSBoundParameters["SearchString"]
62-
$Value = "displayName eq '$TmpValue' or startswith(displayName,'$TmpValue')"
62+
$Value = "displayName eq '$TmpValue' or startsWith(displayName,'$TmpValue')"
6363
$params["Filter"] = $Value
6464
}
6565
if ($null -ne $PSBoundParameters["ErrorVariable"]) {
@@ -108,6 +108,17 @@ function Get-EntraDeletedServicePrincipal {
108108
$response = Get-MgDirectoryDeletedItemAsServicePrincipal @params -Headers $customHeaders
109109
}
110110

111+
$response | ForEach-Object {
112+
if ($null -ne $_) {
113+
if ($null -ne $_.DeletedDateTime) {
114+
# Add DeletionAgeInDays property
115+
$deletionAgeInDays = (Get-Date) - ($_.DeletedDateTime)
116+
Add-Member -InputObject $_ -MemberType NoteProperty -Name DeletionAgeInDays -Value ($deletionAgeInDays.Days) -Force
117+
}
118+
119+
}
120+
}
121+
111122
return $response
112123
}
113124
catch {

module/Entra/Microsoft.Entra/DirectoryManagement/Get-EntraDeletedAdministrativeUnit.ps1

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,17 @@ function Get-EntraDeletedAdministrativeUnit {
109109
$response = Get-MgDirectoryDeletedItemAsAdministrativeUnit @params -Headers $customHeaders
110110
}
111111

112+
$response | ForEach-Object {
113+
if ($null -ne $_) {
114+
if ($null -ne $_.DeletedDateTime) {
115+
# Add DeletionAgeInDays property
116+
$deletionAgeInDays = (Get-Date) - ($_.DeletedDateTime)
117+
Add-Member -InputObject $_ -MemberType NoteProperty -Name DeletionAgeInDays -Value ($deletionAgeInDays.Days) -Force
118+
}
119+
120+
}
121+
}
122+
112123
return $response
113124
}
114125
catch {

module/Entra/Microsoft.Entra/DirectoryManagement/Get-EntraDeletedDevice.ps1

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,17 @@ function Get-EntraDeletedDevice {
108108
$response = Get-MgDirectoryDeletedItemAsDevice @params -Headers $customHeaders
109109
}
110110

111+
$response | ForEach-Object {
112+
if ($null -ne $_) {
113+
if ($null -ne $_.DeletedDateTime) {
114+
# Add DeletionAgeInDays property
115+
$deletionAgeInDays = (Get-Date) - ($_.DeletedDateTime)
116+
Add-Member -InputObject $_ -MemberType NoteProperty -Name DeletionAgeInDays -Value ($deletionAgeInDays.Days) -Force
117+
}
118+
119+
}
120+
}
121+
111122
return $response
112123
}
113124
catch {

module/Entra/Microsoft.Entra/DirectoryManagement/Get-EntraDeletedDirectoryObject.ps1

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ function Get-EntraDeletedDirectoryObject {
7171
Add-Member -InputObject $_ -NotePropertyMembers $_.AdditionalProperties
7272
Add-Member -InputObject $_ -MemberType AliasProperty -Name ObjectId -Value Id
7373

74+
if ($null -ne $_.DeletedDateTime) {
75+
# Add DeletionAgeInDays property
76+
$deletionAgeInDays = (Get-Date) - ($_.DeletedDateTime)
77+
Add-Member -InputObject $_ -MemberType NoteProperty -Name DeletionAgeInDays -Value ($deletionAgeInDays.Days) -Force
78+
}
79+
7480
}
7581
}
7682
$response

module/Entra/Microsoft.Entra/DirectoryManagement/Get-EntraDirectoryRole.ps1

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
function Get-EntraDirectoryRole {
66
[CmdletBinding(DefaultParameterSetName = 'GetQuery')]
77
param (
8-
9-
[Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
8+
[Parameter(ParameterSetName = "GetQuery", ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "The filter to apply to the operation. Use the following format: e.g. PropertyName eq 'Value'")]
109
[System.String] $Filter,
10+
1111
[Alias('ObjectId')]
12-
[Parameter(ParameterSetName = "GetById", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
12+
[Parameter(ParameterSetName = "GetById", Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, HelpMessage = "The directory role's unique ID.")]
1313
[System.String] $DirectoryRoleId,
14-
[Parameter(Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true)]
14+
15+
[Parameter(Mandatory = $false, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, HelpMessage = "Properties to include in the results.")]
1516
[Alias("Select")]
1617
[System.String[]] $Property
1718
)
Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,69 @@
1-
# ------------------------------------------------------------------------------
2-
# Copyright (c) Microsoft Corporation. All Rights Reserved.
3-
# Licensed under the MIT License. See License in the project root for license information.
4-
# ------------------------------------------------------------------------------
1+
# ------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information.
3+
# ------------------------------------------------------------------------------
54
function New-EntraAdministrativeUnit {
65
[CmdletBinding(DefaultParameterSetName = 'InvokeByDynamicParameters')]
76
param (
8-
[Parameter(ParameterSetName = "InvokeByDynamicParameters")]
9-
[System.String] $Description,
10-
[Parameter(ParameterSetName = "InvokeByDynamicParameters", Mandatory = $true)]
11-
[System.String] $DisplayName
7+
[Parameter(ParameterSetName = "InvokeByDynamicParameters", HelpMessage = "Description of the administrative unit.")]
8+
[System.String] $Description,
9+
10+
[Parameter(ParameterSetName = "InvokeByDynamicParameters", Mandatory = $true, HelpMessage = "Display name of the administrative unit.")]
11+
[System.String] $DisplayName,
12+
13+
[Parameter(ParameterSetName = "InvokeByDynamicParameters", HelpMessage = "Membership rule for the administrative unit.")]
14+
[System.String] $MembershipRule,
15+
16+
[Parameter(ParameterSetName = "InvokeByDynamicParameters", HelpMessage = "Membership rule processing state for the administrative unit.")]
17+
[System.String] $MembershipRuleProcessingState,
18+
19+
[Parameter(ParameterSetName = "InvokeByDynamicParameters", HelpMessage = "Membership type for the administrative unit.")]
20+
[System.String] $MembershipType,
21+
22+
[Parameter(ParameterSetName = "InvokeByDynamicParameters", HelpMessage = "Visibility of the administrative unit.")]
23+
[System.String] $Visibility
1224
)
1325

1426
PROCESS {
1527
$params = @{}
1628
$body = @{}
1729
$customHeaders = New-EntraCustomHeaders -Command $MyInvocation.MyCommand
18-
if($null -ne $PSBoundParameters["Description"])
19-
{
30+
31+
if ($null -ne $PSBoundParameters["Description"]) {
2032
$params["Description"] = $PSBoundParameters["Description"]
2133
$body["Description"] = $PSBoundParameters["Description"]
2234
}
23-
if($null -ne $PSBoundParameters["DisplayName"])
24-
{
35+
if ($null -ne $PSBoundParameters["DisplayName"]) {
2536
$params["DisplayName"] = $PSBoundParameters["DisplayName"]
2637
$body["DisplayName"] = $PSBoundParameters["DisplayName"]
2738
}
39+
if ($null -ne $PSBoundParameters["MembershipRule"]) {
40+
$params["MembershipRule"] = $PSBoundParameters["MembershipRule"]
41+
$body["MembershipRule"] = $PSBoundParameters["MembershipRule"]
42+
}
43+
if ($null -ne $PSBoundParameters["MembershipRuleProcessingState"]) {
44+
$params["MembershipRuleProcessingState"] = $PSBoundParameters["MembershipRuleProcessingState"]
45+
$body["MembershipRuleProcessingState"] = $PSBoundParameters["MembershipRuleProcessingState"]
46+
}
47+
if ($null -ne $PSBoundParameters["MembershipType"]) {
48+
$params["MembershipType"] = $PSBoundParameters["MembershipType"]
49+
$body["MembershipType"] = $PSBoundParameters["MembershipType"]
50+
}
51+
if ($null -ne $PSBoundParameters["Visibility"]) {
52+
$params["Visibility"] = $PSBoundParameters["Visibility"]
53+
$body["Visibility"] = $PSBoundParameters["Visibility"]
54+
}
2855

2956
$uri = "/v1.0/directory/administrativeUnits"
3057
$body = $body | ConvertTo-Json
3158

32-
Write-Debug("============================ TRANSFORMATIONS ============================")
33-
$params.Keys | ForEach-Object {"$_ : $($params[$_])" } | Write-Debug
34-
Write-Debug("=========================================================================`n")
59+
Write-Debug "============================ TRANSFORMATIONS ============================"
60+
$params.Keys | ForEach-Object { "$_ : $($params[$_])" } | Write-Debug
61+
Write-Debug "=========================================================================`n"
3562

3663
$response = Invoke-GraphRequest -Headers $customHeaders -Uri $uri -Method POST -Body $body
3764
$response = $response | ConvertTo-Json | ConvertFrom-Json
3865
$auList = @()
39-
foreach($data in $response){
66+
foreach ($data in $response) {
4067
$auType = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAdministrativeUnit
4168
$data.PSObject.Properties | ForEach-Object {
4269
$propertyName = $_.Name
@@ -47,5 +74,4 @@ function New-EntraAdministrativeUnit {
4774
}
4875
$auList
4976
}
50-
}# ------------------------------------------------------------------------------
51-
77+
}

0 commit comments

Comments
 (0)