Skip to content

Commit 41bae3e

Browse files
tmppush
1 parent 52cde90 commit 41bae3e

19 files changed

+312
-122
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using namespace System.Net
2+
3+
Function Invoke-ListStandardsCompare {
4+
<#
5+
.FUNCTIONALITY
6+
Entrypoint
7+
.ROLE
8+
Tenant.BestPracticeAnalyser.Read
9+
#>
10+
[CmdletBinding()]
11+
param($Request, $TriggerMetadata)
12+
13+
# Create mock data for testing with the correct API structure
14+
# Only tenant data with values, no compliance information or standard values
15+
$Results = @(
16+
@{
17+
tenantFilter = 'TenantOne'
18+
standardsResults = @(
19+
@{
20+
standardId = 'standards.MailContacts'
21+
standardName = 'Mail Contacts'
22+
value = @{
23+
GeneralContact = '[email protected]'
24+
SecurityContact = '[email protected]'
25+
MarketingContact = '[email protected]'
26+
TechContact = '[email protected]'
27+
}
28+
},
29+
@{
30+
standardId = 'standards.AuditLog'
31+
standardName = 'Audit Log'
32+
value = $true
33+
},
34+
@{
35+
standardId = 'standards.ProfilePhotos'
36+
standardName = 'Profile Photos'
37+
value = @{
38+
state = @{
39+
label = 'Enabled'
40+
value = 'enabled'
41+
}
42+
}
43+
}
44+
)
45+
},
46+
@{
47+
tenantFilter = 'dev.johnwduprey.com'
48+
standardsResults = @(
49+
@{
50+
standardId = 'standards.MailContacts'
51+
standardName = 'Mail Contacts'
52+
value = @{
53+
GeneralContact = '[email protected]'
54+
SecurityContact = '[email protected]'
55+
}
56+
},
57+
@{
58+
standardId = 'standards.AuditLog'
59+
standardName = 'Audit Log'
60+
value = $false
61+
}
62+
)
63+
}
64+
)
65+
66+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
67+
StatusCode = [HttpStatusCode]::OK
68+
Body = (ConvertTo-Json -Depth 15 -InputObject $Results)
69+
})
70+
71+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
function Set-CIPPStandardsCompareField {
2+
param (
3+
$FieldName,
4+
$FieldValue,
5+
$TenantFilter
6+
)
7+
$Table = Get-CippTable -tablename 'CippStandardsReports'
8+
$TenantName = Get-Tenants | Where-Object -Property defaultDomainName -EQ $Tenant
9+
$FieldValue = ConvertTo-Json -Compress -InputObject $FieldValue | Out-String
10+
11+
$Existing = Get-CIPPAzDataTableEntity @Table -Filter "PartitionKey eq 'StandardReport' and RowKey eq '$($TenantName.defaultDomainName)'"
12+
if ($Existing) {
13+
$Existing = $Existing | Select-Object * -ExcludeProperty ETag, TimeStamp | ConvertTo-Json -Compress | ConvertFrom-Json -AsHashtable
14+
$Existing[$FieldName] = "$FieldValue"
15+
$Existing['LastRefresh'] = [string]$(Get-Date (Get-Date).ToUniversalTime() -UFormat '+%Y-%m-%dT%H:%M:%S.000Z')
16+
$Existing = [PSCustomObject]$Existing
17+
18+
Add-CIPPAzDataTableEntity @Table -Entity $Existing -Force
19+
} else {
20+
$Result = @{
21+
tenantFilter = "$($TenantName.defaultDomainName)"
22+
GUID = "$($TenantName.customerId)"
23+
RowKey = "$($TenantName.defaultDomainName)"
24+
PartitionKey = 'StandardReport'
25+
LastRefresh = [string]$(Get-Date (Get-Date).ToUniversalTime() -UFormat '+%Y-%m-%dT%H:%M:%S.000Z')
26+
}
27+
$Result[$FieldName] = "$FieldValue"
28+
Add-CIPPAzDataTableEntity @Table -Entity $Result -Force
29+
30+
}
31+
Write-Information "Adding $FieldName to StandardCompare for $Tenant. content is $FieldValue"
32+
}

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardActivityBasedTimeout.ps1

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ function Invoke-CIPPStandardActivityBasedTimeout {
4343
Return
4444
}
4545

46-
# Backwards compatibility for v5.7.0 and older
47-
if ($null -eq $timeout ) { $timeout = '01:00:00' }
48-
4946
$CurrentState = New-GraphGetRequest -Uri 'https://graph.microsoft.com/beta/policies/activityBasedTimeoutPolicies' -tenantid $Tenant
5047
$StateIsCorrect = if ($CurrentState.definition -like "*$timeout*") { $true } else { $false }
5148

@@ -90,7 +87,7 @@ function Invoke-CIPPStandardActivityBasedTimeout {
9087
}
9188

9289
if ($Settings.report -eq $true) {
93-
90+
Set-CIPPStandardsCompareField -FieldName 'standards.ActivityBasedTimeout' -FieldValue $StateIsCorrect -TenantFilter $Tenant
9491
Add-CIPPBPAField -FieldName 'ActivityBasedTimeout' -FieldValue $StateIsCorrect -StoreAs bool -Tenant $Tenant
9592
}
9693

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAddDKIM.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,14 @@ function Invoke-CIPPStandardAddDKIM {
101101
Write-LogMessage -API 'Standards' -tenant $tenant -message 'DKIM is enabled for all available domains' -sev Info
102102
} else {
103103
$NoDKIM = ($NewDomains + $SetDomains.Domain) -join ';'
104-
Write-StandardsAlert -message "DKIM is not enabled for: $NoDKIM" -object @{NewDomains = $NewDomains; SetDomains = $SetDomains} -tenant $tenant -standardName 'AddDKIM' -standardId $Settings.standardId
104+
Write-StandardsAlert -message "DKIM is not enabled for: $NoDKIM" -object @{NewDomains = $NewDomains; SetDomains = $SetDomains } -tenant $tenant -standardName 'AddDKIM' -standardId $Settings.standardId
105105
Write-LogMessage -API 'Standards' -tenant $tenant -message "DKIM is not enabled for: $NoDKIM" -sev Info
106106
}
107107
}
108108

109109
if ($Settings.report -eq $true) {
110110
$DKIMState = if ($null -eq $NewDomains -and $null -eq $SetDomains) { $true } else { $false }
111+
Set-CIPPStandardsCompareField -FieldName 'standards.AddDKIM' -FieldValue $DKIMState -TenantFilter $tenant
111112
Add-CIPPBPAField -FieldName 'DKIM' -FieldValue $DKIMState -StoreAs bool -Tenant $tenant
112113
}
113114
}

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAnonReportDisable.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,13 @@ function Invoke-CIPPStandardAnonReportDisable {
5252
if ($CurrentInfo.displayConcealedNames -eq $false) {
5353
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Anonymous Reports is disabled' -sev Info
5454
} else {
55-
Write-StandardsAlert -message "Anonymous Reports is not disabled" -object $CurrentInfo -tenant $tenant -standardName 'AnonReportDisable' -standardId $Settings.standardId
55+
Write-StandardsAlert -message 'Anonymous Reports is not disabled' -object $CurrentInfo -tenant $tenant -standardName 'AnonReportDisable' -standardId $Settings.standardId
5656
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Anonymous Reports is not disabled' -sev Info
5757
}
5858
}
5959
if ($Settings.report -eq $true) {
60+
$stateisCorrrect = $CurrentInfo.displayConcealedNames ? $false : $true
61+
Set-CIPPStandardsCompareField -FieldName 'standard.AnonReportDisable' -FieldValue $stateisCorrrect -TenantFilter $tenant
6062
Add-CIPPBPAField -FieldName 'AnonReport' -FieldValue $CurrentInfo.displayConcealedNames -StoreAs bool -Tenant $tenant
6163
}
6264
}

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAntiPhishPolicy.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ function Invoke-CIPPStandardAntiPhishPolicy {
218218
}
219219

220220
if ($Settings.report -eq $true) {
221+
Set-CIPPStandardsCompareField -FieldName 'standard.AntiPhishPolicy' -FieldValue $StateIsCorrect -TenantFilter $tenant
221222
Add-CIPPBPAField -FieldName 'AntiPhishPolicy' -FieldValue $StateIsCorrect -StoreAs bool -Tenant $tenant
222223
}
223224

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAntiSpamSafeList.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ function Invoke-CIPPStandardAntiSpamSafeList {
4949
$StateIsCorrect = if ($CurrentState -eq $WantedState) { $true } else { $false }
5050

5151
if ($Settings.report -eq $true) {
52+
Set-CIPPStandardsCompareField -FieldName 'standard.AntiSpamSafeList' -FieldValue $StateIsCorrect -TenantFilter $Tenant
5253
Add-CIPPBPAField -FieldName 'AntiSpamSafeList' -FieldValue $CurrentState -StoreAs bool -Tenant $Tenant
5354
}
5455

@@ -74,7 +75,7 @@ function Invoke-CIPPStandardAntiSpamSafeList {
7475
if ($StateIsCorrect -eq $true) {
7576
Write-LogMessage -API 'Standards' -tenant $Tenant -message "The Anti-Spam Connection Filter Safe List is set correctly to $WantedState" -sev Info
7677
} else {
77-
Write-StandardsAlert -message "The Anti-Spam Connection Filter Safe List is not set correctly to $WantedState" -object @{CurrentState = $CurrentState; WantedState = $WantedState} -tenant $Tenant -standardName 'AntiSpamSafeList' -standardId $Settings.standardId
78+
Write-StandardsAlert -message "The Anti-Spam Connection Filter Safe List is not set correctly to $WantedState" -object @{CurrentState = $CurrentState; WantedState = $WantedState } -tenant $Tenant -standardName 'AntiSpamSafeList' -standardId $Settings.standardId
7879
Write-LogMessage -API 'Standards' -tenant $Tenant -message "The Anti-Spam Connection Filter Safe List is not set correctly to $WantedState" -sev Info
7980
}
8081
}

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAppDeploy.ps1

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,10 @@ function Invoke-CIPPStandardAppDeploy {
6767
Write-LogMessage -API 'Standards' -tenant $tenant -message 'All applications are deployed' -sev Info
6868
}
6969
}
70+
71+
if ($Settings.report -eq $true) {
72+
$StateIsCorrect = $MissingApps.Count -eq 0 ? $true : $MissingApps
73+
Set-CIPPStandardsCompareField -FieldName 'standard.AppDeploy' -FieldValue $StateIsCorrect -TenantFilter $tenant
74+
Add-CIPPBPAField -FieldName 'AppDeploy' -FieldValue $StateIsCorrect -StoreAs bool -Tenant $tenant
75+
}
7076
}

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAtpPolicyForO365.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,14 @@ function Invoke-CIPPStandardAtpPolicyForO365 {
6565
if ($StateIsCorrect -eq $true) {
6666
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Atp Policy For O365 is enabled' -sev Info
6767
} else {
68-
Write-StandardsAlert -message "Atp Policy For O365 is not enabled" -object $CurrentState -tenant $Tenant -standardName 'AtpPolicyForO365' -standardId $Settings.standardId
68+
Write-StandardsAlert -message 'Atp Policy For O365 is not enabled' -object $CurrentState -tenant $Tenant -standardName 'AtpPolicyForO365' -standardId $Settings.standardId
6969
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Atp Policy For O365 is not enabled' -sev Info
7070
}
7171
}
7272

7373
if ($Settings.report -eq $true) {
74+
$state = $StateIsCorrect -eq $true ? $true : $CurrentState
75+
Set-CIPPStandardsCompareField -FieldName 'standard.AtpPolicyForO365' -FieldValue $state -TenantFilter $tenant
7476
Add-CIPPBPAField -FieldName 'AtpPolicyForO365' -FieldValue $StateIsCorrect -StoreAs bool -Tenant $tenant
7577
}
7678

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardAuditLog.ps1

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,39 +43,40 @@ function Invoke-CIPPStandardAuditLog {
4343
$DehydratedTenant = (New-ExoRequest -tenantid $Tenant -cmdlet 'Get-OrganizationConfig' -Select IsDehydrated).IsDehydrated
4444
if ($DehydratedTenant -eq $true) {
4545
try {
46-
$null = New-ExoRequest -tenantid $Tenant -cmdlet 'Enable-OrganizationCustomization'
47-
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Organization customization enabled.' -sev Info
46+
New-ExoRequest -tenantid $Tenant -cmdlet 'Enable-OrganizationCustomization'
47+
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Organization customization enabled.' -sev Info
4848
} catch {
49-
$ErrorMessage = Get-CippException -Exception $_
50-
Write-LogMessage -API 'Standards' -tenant $Tenant -message "Failed to enable organization customization. Error: $($ErrorMessage.NormalizedError)" -sev Debug -LogData $ErrorMessage
49+
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
50+
Write-LogMessage -API 'Standards' -tenant $tenant -message "Failed to enable organization customization. Error: $ErrorMessage" -sev Debug
5151
}
5252
}
5353

5454
try {
5555
if ($AuditLogEnabled -eq $true) {
56-
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Unified Audit Log already enabled.' -sev Info
56+
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Unified Audit Log already enabled.' -sev Info
5757
} else {
58-
$null = New-ExoRequest -tenantid $Tenant -cmdlet 'Set-AdminAuditLogConfig' -cmdParams @{UnifiedAuditLogIngestionEnabled = $true }
59-
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Unified Audit Log Enabled.' -sev Info
58+
New-ExoRequest -tenantid $Tenant -cmdlet 'Set-AdminAuditLogConfig' -cmdParams @{UnifiedAuditLogIngestionEnabled = $true }
59+
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Unified Audit Log Enabled.' -sev Info
6060
}
6161

6262
} catch {
63-
$ErrorMessage = Get-CippException -Exception $_
64-
Write-LogMessage -API 'Standards' -tenant $Tenant -message "Failed to apply Unified Audit Log. Error: $($ErrorMessage.NormalizedError)" -sev Error -LogData $ErrorMessage
63+
$ErrorMessage = Get-NormalizedError -Message $_.Exception.Message
64+
Write-LogMessage -API 'Standards' -tenant $tenant -message "Failed to apply Unified Audit Log. Error: $ErrorMessage" -sev Error
6565
}
6666
}
6767
if ($Settings.alert -eq $true) {
6868

6969
if ($AuditLogEnabled -eq $true) {
70-
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Unified Audit Log is enabled' -sev Info
70+
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Unified Audit Log is enabled' -sev Info
7171
} else {
72-
Write-StandardsAlert -message "Unified Audit Log is not enabled" -object @{AuditLogEnabled = $AuditLogEnabled} -tenant $Tenant -standardName 'AuditLog' -standardId $Settings.standardId
73-
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Unified Audit Log is not enabled' -sev Info
72+
Write-StandardsAlert -message 'Unified Audit Log is not enabled' -object @{AuditLogEnabled = $AuditLogEnabled } -tenant $Tenant -standardName 'AuditLog' -standardId $Settings.standardId
73+
Write-LogMessage -API 'Standards' -tenant $tenant -message 'Unified Audit Log is not enabled' -sev Info
7474
}
7575
}
7676

7777
if ($Settings.report -eq $true) {
78-
79-
Add-CIPPBPAField -FieldName 'AuditLog' -FieldValue $AuditLogEnabled -StoreAs bool -Tenant $Tenant
78+
$state = $AuditLogEnabled -eq $true ? $true : $AuditLogEnabled
79+
Set-CIPPStandardsCompareField -FieldName 'standard.AuditLog' -FieldValue $state -TenantFilter $Tenant
80+
Add-CIPPBPAField -FieldName 'AuditLog' -FieldValue $AuditLogEnabled -StoreAs bool -Tenant $tenant
8081
}
8182
}

0 commit comments

Comments
 (0)