From ad38f9decbeecda49496e8c70842dd6cb924cc21 Mon Sep 17 00:00:00 2001 From: Yorick Kuijs Date: Fri, 29 Nov 2024 11:46:00 +0100 Subject: [PATCH] Feedback incorporated --- .../MSFT_TeamsProtectionPolicy.schema.mof | 2 +- .../1-AddingNewCaseHoldPolicy.ps1 | 35 +++++++++++------ .../1-AddingNewSupervisoryReviewRule.ps1 | 32 ++++++++++----- ...reateNewUnifiedAuditLogRetentionPolicy.ps1 | 31 ++++++++++----- .../1-TeamsCallHoldPolicy-Example.ps1 | 25 ++++++++---- .../TeamsChannel/1-CreateTeamsChannel.ps1 | 32 ++++++++++----- .../1-AddNewChannelsPolicy.ps1 | 18 +++++++-- .../TeamsProtectionPolicy/2-Update.ps1 | 32 ++++++++++----- .../1-TeamsShiftsPolicy-Example.ps1 | 39 ++++++++++++------- .../Resources/TeamsTeam/1-CreateNewTeam.ps1 | 34 ++++++++++------ 10 files changed, 192 insertions(+), 88 deletions(-) diff --git a/Modules/Microsoft365DSC/DSCResources/MSFT_TeamsProtectionPolicy/MSFT_TeamsProtectionPolicy.schema.mof b/Modules/Microsoft365DSC/DSCResources/MSFT_TeamsProtectionPolicy/MSFT_TeamsProtectionPolicy.schema.mof index df840353d0..ebe3cc62b4 100644 --- a/Modules/Microsoft365DSC/DSCResources/MSFT_TeamsProtectionPolicy/MSFT_TeamsProtectionPolicy.schema.mof +++ b/Modules/Microsoft365DSC/DSCResources/MSFT_TeamsProtectionPolicy/MSFT_TeamsProtectionPolicy.schema.mof @@ -6,7 +6,7 @@ class MSFT_TeamsProtectionPolicy : OMI_BaseResource [Write, Description("The AdminDisplayName parameter specifies a description for the policy.")] String AdminDisplayName; [Write, Description("The HighConfidencePhishQuarantineTag parameter specifies the quarantine policy that's used for messages that are quarantined as high confidence phishing by ZAP for Teams."), ValueMap{"AdminOnlyAccessPolicy","DefaultFullAccessPolicy","DefaultFullAccessWithNotificationPolicy"}, Values{"AdminOnlyAccessPolicy","DefaultFullAccessPolicy","DefaultFullAccessWithNotificationPolicy"}] String HighConfidencePhishQuarantineTag; [Write, Description("The MalwareQuarantineTag parameter specifies the quarantine policy that's used for messages that are quarantined as malware by ZAP for Teams."), ValueMap{"AdminOnlyAccessPolicy","DefaultFullAccessPolicy","DefaultFullAccessWithNotificationPolicy"}, Values{"AdminOnlyAccessPolicy","DefaultFullAccessPolicy","DefaultFullAccessWithNotificationPolicy"}] String MalwareQuarantineTag; - [Write, Description("he ZapEnabled parameter specifies whether to enable zero-hour auto purge (ZAP) for malware and high confidence phishing messages in Teams messages.")] Boolean ZapEnabled; + [Write, Description("The ZapEnabled parameter specifies whether to enable zero-hour auto purge (ZAP) for malware and high confidence phishing messages in Teams messages.")] Boolean ZapEnabled; [Write, Description("Credentials of the Exchange Global Admin"), EmbeddedInstance("MSFT_Credential")] string Credential; [Write, Description("Id of the Azure Active Directory application to authenticate with.")] String ApplicationId; [Write, Description("Id of the Azure Active Directory tenant used for authentication.")] String TenantId; diff --git a/Modules/Microsoft365DSC/Examples/Resources/SCCaseHoldPolicy/1-AddingNewCaseHoldPolicy.ps1 b/Modules/Microsoft365DSC/Examples/Resources/SCCaseHoldPolicy/1-AddingNewCaseHoldPolicy.ps1 index 62fd2b4ce1..f7be800862 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/SCCaseHoldPolicy/1-AddingNewCaseHoldPolicy.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/SCCaseHoldPolicy/1-AddingNewCaseHoldPolicy.ps1 @@ -5,10 +5,19 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) Import-DscResource -ModuleName Microsoft365DSC @@ -16,14 +25,16 @@ Configuration Example { SCCaseHoldPolicy 'CaseHoldPolicy' { - Case = "Test Case" - ExchangeLocation = "DemoGroup@contoso.onmicrosoft.com" - Name = "Demo Hold" - PublicFolderLocation = "All" - Comment = "This is a demo" - Enabled = $True - Ensure = "Present" - Credential = $Credscredential + Case = 'Test Case' + ExchangeLocation = 'DemoGroup@contoso.onmicrosoft.com' + Name = 'Demo Hold' + PublicFolderLocation = 'All' + Comment = 'This is a demo' + Enabled = $True + Ensure = 'Present' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/SCSupervisoryReviewRule/1-AddingNewSupervisoryReviewRule.ps1 b/Modules/Microsoft365DSC/Examples/Resources/SCSupervisoryReviewRule/1-AddingNewSupervisoryReviewRule.ps1 index dfa50fdd60..3cf4a2fe32 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/SCSupervisoryReviewRule/1-AddingNewSupervisoryReviewRule.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/SCSupervisoryReviewRule/1-AddingNewSupervisoryReviewRule.ps1 @@ -5,23 +5,35 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) + Import-DscResource -ModuleName Microsoft365DSC Node localhost { SCSupervisoryReviewRule 'SupervisoryReviewRule' { - Name = "DemoRule" - Condition = "(NOT(Reviewee:US Compliance))" - SamplingRate = 100 - Policy = 'TestPolicy' - Ensure = "Present" - Credential = $Credscredential + Name = 'DemoRule' + Condition = '(NOT(Reviewee:US Compliance))' + SamplingRate = 100 + Policy = 'TestPolicy' + Ensure = 'Present' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/SCUnifiedAuditLogRetentionPolicy/1-CreateNewUnifiedAuditLogRetentionPolicy.ps1 b/Modules/Microsoft365DSC/Examples/Resources/SCUnifiedAuditLogRetentionPolicy/1-CreateNewUnifiedAuditLogRetentionPolicy.ps1 index ead7b6c305..0837897aae 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/SCUnifiedAuditLogRetentionPolicy/1-CreateNewUnifiedAuditLogRetentionPolicy.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/SCUnifiedAuditLogRetentionPolicy/1-CreateNewUnifiedAuditLogRetentionPolicy.ps1 @@ -5,22 +5,35 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credentials + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) + Import-DscResource -ModuleName Microsoft365DSC node localhost { SCUnifiedAuditLogRetentionPolicy 'Example' { - Credential = $Credentials; - Ensure = "Present"; - Name = "Test Policy"; - Priority = 1; - RetentionDuration = "SevenDays"; + Credential = $Credentials + Ensure = 'Present' + Name = 'Test Policy' + Priority = 1 + RetentionDuration = 'SevenDays' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/TeamsCallHoldPolicy/1-TeamsCallHoldPolicy-Example.ps1 b/Modules/Microsoft365DSC/Examples/Resources/TeamsCallHoldPolicy/1-TeamsCallHoldPolicy-Example.ps1 index 6af82a7e56..ba3768eab4 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/TeamsCallHoldPolicy/1-TeamsCallHoldPolicy-Example.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/TeamsCallHoldPolicy/1-TeamsCallHoldPolicy-Example.ps1 @@ -5,10 +5,19 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) Import-DscResource -ModuleName Microsoft365DSC @@ -16,9 +25,11 @@ Configuration Example { TeamsCallHoldPolicy 'Example' { - Credential = $Credscredential; - Ensure = "Present"; - Identity = "Global"; + Identity = 'Global' + Ensure = 'Present' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/TeamsChannel/1-CreateTeamsChannel.ps1 b/Modules/Microsoft365DSC/Examples/Resources/TeamsChannel/1-CreateTeamsChannel.ps1 index f5e7e31644..8bbd2e0b5c 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/TeamsChannel/1-CreateTeamsChannel.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/TeamsChannel/1-CreateTeamsChannel.ps1 @@ -5,23 +5,35 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) + Import-DscResource -ModuleName Microsoft365DSC node localhost { TeamsChannel 'ConfigureChannel' { - TeamName = "SuperSecretTeam" - DisplayName = "SP2013 Review teams group" - NewDisplayName = "SP2016 Review teams group" - Description = "SP2016 Code reviews for SPFX" - Ensure = "Present" - Credential = $Credscredential + TeamName = 'SuperSecretTeam' + DisplayName = 'SP2013 Review teams group' + NewDisplayName = 'SP2016 Review teams group' + Description = 'SP2016 Code reviews for SPFX' + Ensure = 'Present' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/TeamsChannelsPolicy/1-AddNewChannelsPolicy.ps1 b/Modules/Microsoft365DSC/Examples/Resources/TeamsChannelsPolicy/1-AddNewChannelsPolicy.ps1 index 9f2cb1a24e..a202f4c10e 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/TeamsChannelsPolicy/1-AddNewChannelsPolicy.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/TeamsChannelsPolicy/1-AddNewChannelsPolicy.ps1 @@ -6,9 +6,17 @@ Configuration Example { param ( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) Import-DscResource -ModuleName Microsoft365DSC @@ -26,7 +34,9 @@ Configuration Example AllowSharedChannelCreation = $True AllowUserToParticipateInExternalSharedChannel = $True Ensure = 'Present' - Credential = $Credscredential + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/TeamsProtectionPolicy/2-Update.ps1 b/Modules/Microsoft365DSC/Examples/Resources/TeamsProtectionPolicy/2-Update.ps1 index fcf5e5569d..7d95f3b282 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/TeamsProtectionPolicy/2-Update.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/TeamsProtectionPolicy/2-Update.ps1 @@ -5,23 +5,35 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $credsCredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) + Import-DscResource -ModuleName Microsoft365DSC node localhost { - TeamsProtectionPolicy "TeamsProtectionPolicy" + TeamsProtectionPolicy 'TeamsProtectionPolicy' { - IsSingleInstance = "Yes" - AdminDisplayName = "Contoso Administrator" - HighConfidencePhishQuarantineTag = "DefaultFullAccessPolicy" - MalwareQuarantineTag = "AdminOnlyAccessPolicy" + IsSingleInstance = 'Yes' + AdminDisplayName = 'Contoso Administrator' + HighConfidencePhishQuarantineTag = 'DefaultFullAccessPolicy' + MalwareQuarantineTag = 'AdminOnlyAccessPolicy' ZapEnabled = $true - Credential = $credsCredential + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/TeamsShiftsPolicy/1-TeamsShiftsPolicy-Example.ps1 b/Modules/Microsoft365DSC/Examples/Resources/TeamsShiftsPolicy/1-TeamsShiftsPolicy-Example.ps1 index 4edfab81b1..79947b0277 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/TeamsShiftsPolicy/1-TeamsShiftsPolicy-Example.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/TeamsShiftsPolicy/1-TeamsShiftsPolicy-Example.ps1 @@ -5,10 +5,19 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) Import-DscResource -ModuleName Microsoft365DSC @@ -16,16 +25,18 @@ Configuration Example { TeamsShiftsPolicy 'Example' { - AccessGracePeriodMinutes = 15; - AccessType = "UnrestrictedAccess_TeamsApp"; - Credential = $Credscredential; - EnableScheduleOwnerPermissions = $False; - EnableShiftPresence = $False; - Ensure = "Present"; - Identity = "Global"; - ShiftNoticeFrequency = "Never"; - ShiftNoticeMessageCustom = ""; - ShiftNoticeMessageType = "DefaultMessage"; + Identity = 'Global' + AccessGracePeriodMinutes = 15 + AccessType = 'UnrestrictedAccess_TeamsApp' + EnableScheduleOwnerPermissions = $False + EnableShiftPresence = $False + Ensure = 'Present' + ShiftNoticeFrequency = 'Never' + ShiftNoticeMessageCustom = '' + ShiftNoticeMessageType = 'DefaultMessage' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } } diff --git a/Modules/Microsoft365DSC/Examples/Resources/TeamsTeam/1-CreateNewTeam.ps1 b/Modules/Microsoft365DSC/Examples/Resources/TeamsTeam/1-CreateNewTeam.ps1 index af538b0418..9d2b9e2096 100644 --- a/Modules/Microsoft365DSC/Examples/Resources/TeamsTeam/1-CreateNewTeam.ps1 +++ b/Modules/Microsoft365DSC/Examples/Resources/TeamsTeam/1-CreateNewTeam.ps1 @@ -5,21 +5,31 @@ It is not meant to use as a production baseline. Configuration Example { - param( - [Parameter(Mandatory = $true)] - [PSCredential] - $Credscredential + param + ( + [Parameter()] + [System.String] + $ApplicationId, + + [Parameter()] + [System.String] + $TenantId, + + [Parameter()] + [System.String] + $CertificateThumbprint ) + Import-DscResource -ModuleName Microsoft365DSC node localhost { TeamsTeam 'ConfigureTeam' { - DisplayName = "Sample3" - Description = "Sample" - Visibility = "Private" - MailNickName = "DSCTeam2" + DisplayName = 'Sample3' + Description = 'Sample' + Visibility = 'Private' + MailNickName = 'DSCTeam2' AllowUserEditMessages = $false AllowUserDeleteMessages = $false AllowOwnerDeleteMessages = $false @@ -31,13 +41,15 @@ Configuration Example AllowCreateUpdateRemoveTabs = $false AllowCreateUpdateRemoveConnectors = $false AllowGiphy = $True - GiphyContentRating = "strict" + GiphyContentRating = 'strict' AllowStickersAndMemes = $True AllowCustomMemes = $True AllowGuestCreateUpdateChannels = $true AllowGuestDeleteChannels = $true - Ensure = "Present" - Credential = $Credscredential + Ensure = 'Present' + ApplicationId = $ApplicationId + TenantId = $TenantId + CertificateThumbprint = $CertificateThumbprint } } }