microsoft / microsoft365dsc Goto Github PK
View Code? Open in Web Editor NEWManages, configures, extracts and monitors Microsoft 365 tenant configurations
Home Page: https://aka.ms/M365DSC
License: MIT License
Manages, configures, extracts and monitors Microsoft 365 tenant configurations
Home Page: https://aka.ms/M365DSC
License: MIT License
Extracted users and groups from my O365 tenant. While user configuration is indeed decoupled from the tenant name:
UserPrincipalName = "user1@$($ConfigurationData.NonNodeData.OrganizationName)";
Group memberships contain tenant name explicitly:
Members = @("user1@contoso.com","user2@contoso.com");
N/A
Export members with $($ConfigurationData.NonNodeData.OrganizationName) instead of the actual organization name.
N/A
OsName : Microsoft Windows Server 2019 Datacenter
OsOperatingSystemSKU : DatacenterServerEdition
OsArchitecture : 64-bit
WindowsVersion : 1809
WindowsBuildLabEx : 17763.1.amd64fre.rs5_release.180914-1434
OsLanguage : en-US
OsMuiLanguages : {en-US}
1.0.0.8
Not all tenants support extracting all the components currently listed in the ReverseDSC Graphical User Interface and not all users types are allowed to extract everything. We should update the GUI to start by prompting the users for their credentials first, and then only disply the checkboxes for the items they are authorized to access and extract.
Create a 3 custom pipeline tasks in Azure DevOPS to ease the creation of Monitoring, Push and Pull Release Pipelines for Office365DSC.
New Resource
1 - Create a new TeamsChannel using O365DSC;
2 - Manually delete that channel from the Web interface;
3 - Re-run the DSC in an attempt to recreate the teams. You will get error:
Error occurred while executing
Code: NameAlreadyExists
Message: Channel name already existed, please use other nameFailed to execute Skype backend request
CreateThreadRequest.
InnerError:
RequestId: 477ee23b-6da7-43d0-8708-d98a5ca32bb3
DateTimeStamp: 2019-05-23T16:21:18
HttpStatusCode: NameAlreadyExists
+ CategoryInfo : NotSpecified: (:) [], CimException
+ FullyQualifiedErrorId : Microsoft.TeamsCmdlets.PowerShell.Custom.ErrorHandling.ApiException,Microsoft.TeamsCmdle
ts.PowerShell.Custom.NewTeamChannel
+ PSComputerName : localhost
Error occurred while executing
Code: NameAlreadyExists
Message: Channel name already existed, please use other nameFailed to execute Skype backend request
CreateThreadRequest.
InnerError:
RequestId: 477ee23b-6da7-43d0-8708-d98a5ca32bb3
DateTimeStamp: 2019-05-23T16:21:18
HttpStatusCode: NameAlreadyExists
+ CategoryInfo : NotSpecified: (:) [], CimException
+ FullyQualifiedErrorId : Microsoft.TeamsCmdlets.PowerShell.Custom.ErrorHandling.ApiException,Microsoft.TeamsCmdle
ts.PowerShell.Custom.NewTeamChannel
+ PSComputerName : localhost
N/A
TeamsTeam WeeklyMeetings
{
DisplayName = "WeeklyMeetings"
AllowGiphy = $true
AllowUserDeleteMessages = $true
GlobalAdminAccount = $Creds
Ensure = "Present"
}
TeamsChannel Reviews
{
TeamName = "WeeklyMeetings"
DisplayName = "Team Reviews"
GlobalAdminAccount = $Creds
DependsOn = "[TeamsTeam]WeeklyMeetings"
Ensure = "Present"
}
TeamsChannel LT
{
TeamName = "WeeklyMeetings"
DisplayName = "Leadership Team"
GlobalAdminAccount = $Creds
DependsOn = "[TeamsTeam]WeeklyMeetings"
Ensure = "Present"
}
The Unit Test pipeline is not failing when a Unit test does. That is most likely due to the Pester's output not actually throwing a PoSh error. We should modify the Pipeline's Task to analyze the Pester's output and force a throw exception if any test fails.
SCC sensitivity labels
Resource for the following Get-Label, New-Label, Set-Label and Remove-Label
New resource
New Resource
IsSingleInstance
ODSettings Set-TargetResource method is extremely slow to complete. Instead of calling the Set-SPOTenant cmdlet multiple times, we should build an hash of parameters to set and only call it once.
N/A
Change logic to build a param hash and only call Set-SPOTenant once.
N/A
N/A
Alpha
Suggestion from the community: Add a Message Center resource to manage settings such as enforcing that the message center has no unread message, etc.
N/A
May be clashing with other resources definition as the Set-TargetResource would not actually do anything since we can't create messages in the Message Center via APIs.
Most resources have the Ensure parameter. Some only allow the value Present, but the ValueMap still contains Absent. Should Absent be accepted if the description states that only Present is allowed?
New resource to handle Supervision Policies in Security and Compliance Center;
https://docs.microsoft.com/en-us/powershell/module/exchange/policy-and-compliance/new-supervisoryreviewpolicyv2?view=exchange-ps
-Name
-Comment
-Reviewers[]
N/A
If in the same config, you create a Team and then try to add a channel to it, the TeamsChannel resource fails and complains that the team doesn't exist. It seems to be a timing issue because if you re-run the same config a few seconds later then everything works fine.
PowerShell DSC resource MSFT_TeamsChannel failed to execute Test-TargetResource functionality with error message: Team with Name Collab Summit
doesnt exist in tenant
Add a few retries in the TeamsChannel resource whenever the Teams is not found. Maybe just 6 times 5 seconds.
TeamsTeam CollabSummit
{
DisplayName = "Collab Summit"
Description = "This is me demoing the Teams Resource"
GlobalAdminAccount = $GlobalAdmin
Ensure = "Present"
}
TeamsChannel DSCChannel
{
TeamName = "Collab Summit"
DisplayName = "DSC Discussions"
GlobalAdminAccount = $GlobalAdmin
Ensure = "Present"
}
NA
Add a new resource to manage settings for SharePoint Online
All properties in Get-SPOTenant that are not OneDrive related.
New resource to manage SupervisoryReviewRule inside of Security and Compliance Center.
https://docs.microsoft.com/en-us/powershell/module/exchange/policy-and-compliance/new-supervisoryreviewrule?view=exchange-ps
N/A
Hi I'm having issues with Extracting SPOApp using the version 1.0.0.773 of the module.
Extracting SPOApp...
System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Url' because it is
null.
at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exc
eption)
at System.Management.Automation.Interpreter.ActionCallInstruction2.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0) at System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean crea teLocalScope, Dictionary
2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Obj ect dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object[] args) at System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.<InvokeWithPipe>b__0() at System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action) at System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandling Behavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean p ropagateAllExceptionsToTop, List
1 variablesToDefine, Dictionary`2 functionsToDefine, Object[] args)
at System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet contextCmdlet, Boolean useLocalScope, ErrorHandl
ingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Object[] args)
at Microsoft.PowerShell.Commands.InvokeExpressionCommand.ProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
When calling the Get-TargetResource method on the ExoDkimSigningConfig resource, it writes the following message to the host:
Creating a new session for implicit remoting of "Get-DkimSigningConfig" command...
and then prompts for credentials.
"Creating a new session for implicit remoting of "Get-DkimSigningConfig" command..."
N/A
Occurs when calling the Get-TargetResource
N/A
Create resource to manage SCC Compliance Tags
https://docs.microsoft.com/en-us/powershell/module/exchange/policy-and-compliance-retention/new-compliancetag?view=exchange-ps
Please assign this issue to me @desmay
Trying to install the Office365DSC module is AzureADPreview is present or trying to installe the AzureAD module once the Office365DSC module is present will throw an error complaining about duplicate cmdlets.
PackageManagement\Install-Package : The following commands are already available on this sys
tem:'Get-AzureADApplicationProxyConnectorGroupMembers,Add-AzureADApplicationOwner,Add-AzureA
DDeviceRegisteredOwner,Add-AzureADDeviceRegisteredUser,Add-AzureADDirectoryRoleMember,Add-Az
ureADGroupMember,Add-AzureADGroupOwner,Add-AzureADMSLifecyclePolicyGroup,Add-AzureADServiceP
rincipalOwner,Confirm-AzureADDomain,Connect-AzureAD,Disconnect-AzureAD,Enable-AzureADDirect [...]
Add logic to do a graceful check for duplicate methods or known conflicting modules.
N/A
Win Server 2019
I am faced with a situation where the Hub Site Principals are groups, but they don't have any emails assigned. We need to figure out how to better handle these scenarios.
N/A
N/A
N/A
Alpha
Every now and then, extracting EXOMailboxSettings with ReverseDSC will throw errors complaining about "Get-MailboxRegionalConfiguration" giving issues like following:
Error on proxy command 'Get-MailboxRegionalConfiguration -Identity:'admin'' to server
YQBPR0101MB0851.CANPRD01.PROD.OUTLOOK.COM: Server version 15.20.2052.0000, Proxy method
PSWS:
Cmdlet error with following error message:
Microsoft.Exchange.Data.Storage.MailboxInfoStaleException: Can't connect to the mailbox of
user Mailbox database guid: e350cc7b-d7cb-4416-a715-02adbe30c84c because the
ExchangePrincipal object contains outdated information. The mailbox may have been moved
recently. ---> Microsoft.Exchange.Data.Storage.DatabaseNotFoundException: The database with
ID 'e350cc7b-d7cb-4416-a715-02adbe30c84c' couldn't be found. --->
Microsoft.Exchange.Data.Directory.ServerInMMException: The domain controller
'YQBPR0101DC0005.CANPRD01.PROD.OUTLOOK.COM' is not available for use at the moment. Please
try again.
at Microsoft.Exchange.Data.Directory.TopologyDiscovery.SuitabilityVerifier.CheckIsServerSu
itable(String fqdn, Boolean isGlobalCatalog, NetworkCredential credentials,
SuitabilityCheckResult& suitabilityCheckResult)
at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType
connectionType, String partitionFqdn, ADObjectId domain, String serverName, Int32 port,
NetworkCredential credential)
at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType
connectionType, String partitionFqdn, NetworkCredential networkCredential, String
serverName, Int32 port)
at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType
connectionType, String partitionFqdn, NetworkCredential networkCredential, String serverName)
at Microsoft.Exchange.Data.Directory.ADDataSession.GetConnection(String preferredServer,
Boolean isWriteOperation, String optionalBaseDN, ADObjectId& rootId, ADScope scope)
at Microsoft.Exchange.Data.Directory.ADDataSession.InternalFind[TResult](ADObjectId
rootId, String optionalBaseDN, ADObjectId readId, QueryScope scope, QueryFilter filter,
SortBy sortBy, Int32 maxResults, IEnumerable1 properties, Boolean includeDeletedObjects, Boolean includeSoftDeletedObjects) at Microsoft.Exchange.Data.Directory.ADDataSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable
1
properties, Boolean includeDeletedObjects, Boolean includeSoftDeletedObjects)
at Microsoft.Exchange.Data.Directory.SystemConfiguration.ADTopologyConfigurationSession.In
ternalFind[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy,
Int32 maxResults, IEnumerable1 properties) at Microsoft.Exchange.Data.Directory.SystemConfiguration.ADTopologyConfigurationSession.Fi nd[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable
1 properties, String callerFilePath, Int32 callerFileLine, String
memberName)
at Microsoft.Exchange.Data.HA.DirectoryServices.ADTopologyConfigurationSessionWrapper.Find
Internal[TADWrapperObject,TADObject](ADObjectId rootId, QueryScope scope, QueryFilter
filter, SortBy sortBy, Int32 maxResults, IEnumerable1 properties) at Microsoft.Exchange.Data.HA.DirectoryServices.ADTopologyConfigurationSessionWrapper.Find [TADWrapperObject](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults) at Microsoft.Exchange.Data.Storage.Cluster.DirectoryServices.SimpleAdObjectLookup
1.<>c__D
isplayClass9_0.b__0()
at Microsoft.Exchange.Data.Directory.ADNotificationAdapter.RunADOperation(ADOperation
adOperation, Int32 retryCount)
at Microsoft.Exchange.Data.Directory.ADNotificationAdapter.TryRunADOperation(ADOperation
adOperation, Int32 retryCount)
--- End of inner exception stack trace ---
at Microsoft.Exchange.Data.Storage.ActiveManager.ActiveManager.GetDatabaseByGuidEx(IFindAd
Object1 databaseLookup, Guid databaseId, AdObjectLookupFlags flags, IPerformanceDataLogger perfLogger) at Microsoft.Exchange.Data.Storage.ActiveManager.ActiveManager.GetServerNameForDatabase(Guid databaseId, GetServerForDatabaseFlags gsfdFlags, IPerformanceDataLogger perfLogger, IADDatabase& database) at Microsoft.Exchange.Data.Storage.ActiveManager.ActiveManager.GetServerForDatabase(Guid databaseId, GetServerForDatabaseFlags gsfdFlags, IPerformanceDataLogger perfLogger) at Microsoft.Exchange.Data.Storage.DatabaseLocationProvider.GetLocationInfo(Guid mdbGuid, Boolean bypassCache, Boolean ignoreSiteBoundary) --- End of inner exception stack trace --- at Microsoft.Exchange.Data.Storage.DatabaseLocationProvider.GetLocationInfo(Guid mdbGuid, Boolean bypassCache, Boolean ignoreSiteBoundary) at Microsoft.Exchange.Data.Storage.Principal.MailboxLocationFactory.Create(Guid mdbGuid, RemotingOptions remotingOptions, Boolean createLocationOnDemand) at Microsoft.Exchange.Data.Storage.ExchangePrincipalFactory.InternalFromADUser(IGenericADUser user, RemotingOptions remotingOptions, Boolean createLocationOnDemand) at Microsoft.Exchange.Data.Storage.Performance.MailboxOperationPerformanceTracker.ExecuteW ithLatencyTracking[T](ActivityOperationType operation, Func
1 action, String instance)
at Microsoft.Exchange.Management.StoreTasks.GetMailboxRegionalConfiguration.CreateMailboxD
ataProvider(ADUser adUser)
at Microsoft.Exchange.Configuration.Tasks.DataAccessTask1.InternalStateReset() at Microsoft.Exchange.Configuration.Tasks.GetTaskBase
1.InternalStateReset()
at Microsoft.Exchange.Configuration.Tasks.Task.b__93_1()
at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName,
Action func, Boolean terminatePipelineIfFailed).
[Server=YTBPR01MB3038,RequestId=8be3b4cf-e565-4ceb-850a-86292a97c7d4,TimeStamp=7/11/2019
1:29:51 AM] .
+ CategoryInfo : NotSpecified: (:) [Get-MailboxRegionalConfiguration], CmdletPr
oxyException
+ FullyQualifiedErrorId : Microsoft.Exchange.Configuration.CmdletProxyException,Microsof
t.Exchange.Management.StoreTasks.GetMailboxRegionalConfiguration
+ PSComputerName : outlook.office365.com
We still can't find a pattern for these occurrences and they are not always reproduced from one extraction run to another. Logging this for Knowledge Base purposes.
Error on proxy command 'Get-MailboxRegionalConfiguration -Identity:'admin'' to server
YQBPR0101MB0851.CANPRD01.PROD.OUTLOOK.COM: Server version 15.20.2052.0000, Proxy method
PSWS:
Cmdlet error with following error message:
Microsoft.Exchange.Data.Storage.MailboxInfoStaleException: Can't connect to the mailbox of
user Mailbox database guid: e350cc7b-d7cb-4416-a715-02adbe30c84c because the
ExchangePrincipal object contains outdated information. The mailbox may have been moved
recently. ---> Microsoft.Exchange.Data.Storage.DatabaseNotFoundException: The database with
ID 'e350cc7b-d7cb-4416-a715-02adbe30c84c' couldn't be found. --->
Microsoft.Exchange.Data.Directory.ServerInMMException: The domain controller
'YQBPR0101DC0005.CANPRD01.PROD.OUTLOOK.COM' is not available for use at the moment. Please
try again.
at Microsoft.Exchange.Data.Directory.TopologyDiscovery.SuitabilityVerifier.CheckIsServerSu
itable(String fqdn, Boolean isGlobalCatalog, NetworkCredential credentials,
SuitabilityCheckResult& suitabilityCheckResult)
at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType
connectionType, String partitionFqdn, ADObjectId domain, String serverName, Int32 port,
NetworkCredential credential)
at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType
connectionType, String partitionFqdn, NetworkCredential networkCredential, String
serverName, Int32 port)
at Microsoft.Exchange.Data.Directory.ConnectionPoolManager.GetConnection(ConnectionType
connectionType, String partitionFqdn, NetworkCredential networkCredential, String serverName)
at Microsoft.Exchange.Data.Directory.ADDataSession.GetConnection(String preferredServer,
Boolean isWriteOperation, String optionalBaseDN, ADObjectId& rootId, ADScope scope)
at Microsoft.Exchange.Data.Directory.ADDataSession.InternalFind[TResult](ADObjectId
rootId, String optionalBaseDN, ADObjectId readId, QueryScope scope, QueryFilter filter,
SortBy sortBy, Int32 maxResults, IEnumerable1 properties, Boolean includeDeletedObjects, Boolean includeSoftDeletedObjects) at Microsoft.Exchange.Data.Directory.ADDataSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable
1
properties, Boolean includeDeletedObjects, Boolean includeSoftDeletedObjects)
at Microsoft.Exchange.Data.Directory.SystemConfiguration.ADTopologyConfigurationSession.In
ternalFind[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy,
Int32 maxResults, IEnumerable1 properties) at Microsoft.Exchange.Data.Directory.SystemConfiguration.ADTopologyConfigurationSession.Fi nd[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable
1 properties, String callerFilePath, Int32 callerFileLine, String
memberName)
at Microsoft.Exchange.Data.HA.DirectoryServices.ADTopologyConfigurationSessionWrapper.Find
Internal[TADWrapperObject,TADObject](ADObjectId rootId, QueryScope scope, QueryFilter
filter, SortBy sortBy, Int32 maxResults, IEnumerable1 properties) at Microsoft.Exchange.Data.HA.DirectoryServices.ADTopologyConfigurationSessionWrapper.Find [TADWrapperObject](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults) at Microsoft.Exchange.Data.Storage.Cluster.DirectoryServices.SimpleAdObjectLookup
1.<>c__D
isplayClass9_0.b__0()
at Microsoft.Exchange.Data.Directory.ADNotificationAdapter.RunADOperation(ADOperation
adOperation, Int32 retryCount)
at Microsoft.Exchange.Data.Directory.ADNotificationAdapter.TryRunADOperation(ADOperation
adOperation, Int32 retryCount)
--- End of inner exception stack trace ---
at Microsoft.Exchange.Data.Storage.ActiveManager.ActiveManager.GetDatabaseByGuidEx(IFindAd
Object1 databaseLookup, Guid databaseId, AdObjectLookupFlags flags, IPerformanceDataLogger perfLogger) at Microsoft.Exchange.Data.Storage.ActiveManager.ActiveManager.GetServerNameForDatabase(Guid databaseId, GetServerForDatabaseFlags gsfdFlags, IPerformanceDataLogger perfLogger, IADDatabase& database) at Microsoft.Exchange.Data.Storage.ActiveManager.ActiveManager.GetServerForDatabase(Guid databaseId, GetServerForDatabaseFlags gsfdFlags, IPerformanceDataLogger perfLogger) at Microsoft.Exchange.Data.Storage.DatabaseLocationProvider.GetLocationInfo(Guid mdbGuid, Boolean bypassCache, Boolean ignoreSiteBoundary) --- End of inner exception stack trace --- at Microsoft.Exchange.Data.Storage.DatabaseLocationProvider.GetLocationInfo(Guid mdbGuid, Boolean bypassCache, Boolean ignoreSiteBoundary) at Microsoft.Exchange.Data.Storage.Principal.MailboxLocationFactory.Create(Guid mdbGuid, RemotingOptions remotingOptions, Boolean createLocationOnDemand) at Microsoft.Exchange.Data.Storage.ExchangePrincipalFactory.InternalFromADUser(IGenericADUser user, RemotingOptions remotingOptions, Boolean createLocationOnDemand) at Microsoft.Exchange.Data.Storage.Performance.MailboxOperationPerformanceTracker.ExecuteW ithLatencyTracking[T](ActivityOperationType operation, Func
1 action, String instance)
at Microsoft.Exchange.Management.StoreTasks.GetMailboxRegionalConfiguration.CreateMailboxD
ataProvider(ADUser adUser)
at Microsoft.Exchange.Configuration.Tasks.DataAccessTask1.InternalStateReset() at Microsoft.Exchange.Configuration.Tasks.GetTaskBase
1.InternalStateReset()
at Microsoft.Exchange.Configuration.Tasks.Task.b__93_1()
at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName,
Action func, Boolean terminatePipelineIfFailed).
[Server=YTBPR01MB3038,RequestId=8be3b4cf-e565-4ceb-850a-86292a97c7d4,TimeStamp=7/11/2019
1:29:51 AM] .
+ CategoryInfo : NotSpecified: (:) [Get-MailboxRegionalConfiguration], CmdletPr
oxyException
+ FullyQualifiedErrorId : Microsoft.Exchange.Configuration.CmdletProxyException,Microsof
t.Exchange.Management.StoreTasks.GetMailboxRegionalConfiguration
+ PSComputerName : outlook.office365.com
N/A (ReverseDSC Extraction)
O365DSC
1.0.0.*
Currently, the testing process executes the Pester Unit tests in two locations: Azure DevOPS and AppVeyor. If one of the Unit test fails, only AppVeyor returns the error. The Azure DevOPS displays the error in the logs, but still shows the Build as being successful. That happens even when the failOnStderr is set.
We need to look at options to have the Pester tests ran successfully in Azure DevOPS.
Running a configuration with EXOAtpPolicyForO365 on a tenant that is not configured for it throws the following error:
The term 'Get-AtpPolicyForO365' is not recognized as the name of a cmdlet
We should either modify this resource to provide additional information to the user on how to configure the tenant properly to enable ATP or create anew resource that will allow the configuration to enable ATP all together.
N/A
N/A
N/A
N/A
N/A
When doing a ReverseDSC Extraction of a tenant without an App Catalog Configured, the extraction will silently abort upon hitting the SPOApp resource (if selected as part of the extraction process). We need a way to gracefully print a warning to the user to let them know that no catalogs have been defined for the tenant, and then move on with the extraction.
Extracting ODSettings...
Extracting SPOApp...
Cancel
Handle Error gracefully
N/A
N/A
Alpha
With the ReverseDSC Extraction, we build the SharePoint Central Admin URL dynamically by calling into Get-AzureADUser, taking the first user's domain (after @) and formatting it with https://-admin.sharepoint.com. However, we have had cases were the first user returned is the ADFS account, which has a UPN of @Azure.com (I am sure other scenarios will also cause issues). This breaks the extraction for all SPO related components.
We need to find a better way of dynamically retrieving Central Admin Url for a tenant.
N/A
N/A
N/A
Windows 10
Alpha
When trying to configure Security and Compliance components for the first time on certain tenants, you will get the following error back:
The command you tried to run isn't currently allowed in your organization. To run this command, you first need to run the command: Enable-OrganizationCustomization. + CategoryInfo : NotSpecified: (Microsoft.Excha...AntiPhishPolicy:) [], CimExce ption + FullyQualifiedErrorId : [Server=YQBPR0101MB0851,RequestId=4feee150-d5e9-4d98-aaa2-c8e4 33c8bb8b,TimeStamp=7/5/2019 1:01:17 PM] [FailureCategory=Cmdlet-InvalidOperationInDehydr atedContextException] FDC3D516,Microsoft.Exchange.Management.SystemConfigurationTasks.Ne wAntiPhishPolicy + PSComputerName : Localhost
It would be useful to have a resource to handle the enabling of OrganizationCustomization, which would run Enable-OrganizationCustomization in the background.
There doesn't seem to be the equivalent Disable cmdlet, therefore we may want to prevent Enabled = $false
Hi, I'm trying to use the Export-O365Configuration command, but my account is using MFA and it is throwing the following error:
Connect-AzureAD : AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access
Connect-AzureAD : Response status code does not indicate success: 400 (BadRequest).
Thanks
Need to add support for Iddle Session Signout in the SPOAccess Control Resource
We need to ensure that the Extraction component (ReverseDSC) never stops whenever there are errors detected. We do need however to capture all of these errors, in a very structured way. Potential known errors should have an Error Code, and Stack Trace should be captured as much as possible. Upon finalizing the extraction, the error log should be stored wherever the client decides to store the extraction results and the client should be warned in the console that errors where encountered during the extraction.
We need to make the troubelshooting process as smooth as possible. A client does an extraction, something goes wrong, they get notified and they have a log file they can send us for further troubleshooting.
New Resource
logging under Office365DSC but really belongs to MSCloudLoginAssistant. I have two Tenant Admins in the same Tenant. One who doesn't use MFA, the second one who does. If I open a brand new PowerShell Session and do a Tenant Extraction with Extract-O365Configuration (which succeeds), then do a second extraction for the same tenant, within the same PoSh session, but using the credentials of the user with MFA, I never get prompted for MFA auth and the extraction proceeds successfully, most likely using the credentials from the previous Tenant Admin.
N/A
Would needs to check for a Hash of the credentials somehow and have MSCloudAssistant figure out that a new set of credentials were provided so that we can clear any cache creds and prompt the new user for MFA Auth.
N/A
N/A
N/A
The Test-PnPOnlineConnection has parameter called -SPOCentralAdminUrl
Rename SPOCentralAdminUrl to SPOSiteUrl. Some of the PNP cmdlets are scoped to site level so the connection doesn't always have to be tenant admin url
The Office365DSC module is dependent on the Microsoft.Online.SharePoint.PowerShell module, however this module isn't enough to interact with SPO. The machine need the SharePoint Online Management Shell installed. We circumvented this issue in AppVeyor by executing a script that downloads the .msi installer and does a silent install. I am wondering now if we should add a check to the module to do the same thing if it is not present on the agent running the DSC? Our vision is that on a brand new machine, the mere fact of running Install-Module Office365DSC should allow the agent to execute a DSC script without having to do any additional manual intervention.
We would need to consider this in a server-less LCM approach as well.
The Office365DC module makes use of the MSOL module to create Users and Security Groups. The new recommended approach is to use Azure AD. We need to change references to MSOL to Azure AD in the Util module, the O365User and O365Group Resources.
When running the configuration below, we get an error thrown:
No/invalid credentials were provided, or another error occurred logging on to SharePointOnline.
However, the error really comes from the fact that the Owner property is missing from the config block.
No/invalid credentials were provided, or another error occurred logging on to SharePointOnline.
Improve error handling, and ensure this is catch at compilation time.
# insert configuration here
```SPOSite ReadySite1
{
Title = "DemoReady"
Url = "https://" + $ConfigurationData.NonNodeData.OrganizationName + ".sharepoint.com/sites/Ready1234171"
CentralAdminUrl = "https://" + $ConfigurationData.NonNodeData.OrganizationName + "-admin.sharepoint.com"
Template = "STS#0"
Ensure = "Present"
GlobalAdminAccount = $GlobalAdmin
}
#### The operating system the target node is running
N/A
#### Version of the DSC module that was used ('dev' if using current dev branch)
1.0.0.733
We are now determining the CentralAdminUrl for the ReverseDSC path using the GlobalAdminAccount credentials. Since this is already a required parameter for all SPOx resources, we should be able to dynamically determine that URL and therefore no longer require CentralAdminUrl as a parameter.
The O365Group resource currently uses DisplayName as the primary key, however I have recently ran into a scenario where multiple groups have the exact same display name, but different Identity. We should change the Key of the resource to rely on Identity to make sure the group is unique.
N/A
Change the Resource's Key to be Identity
N/A
New resource to manage Org-Wide settings in Teams
AllowSkypeForBusinessCommunication
AllowSkypeCommunication
AllowGuestAccess
AllowSendEmailToChannel
FileSharingServices @()
ShowOrganizationTabInChat
SecondaryAuthentication
ContentPIN
ResourcesAccountsCanSendMessage
AllowScopeDirectorySearch
UpgradeCoexistenceMode
NotifySkypeForBusinessUsersOfUpgrade
AppPreference
DownloadInBackgroundForSkype
N/A
A new resource with which you can configure and manage Hub sites
SPOHubSite ff4a977d-4d7d-4968-9238-2a1702aa699c
{
Url = "https://office365dsc.sharepoint.com/sites/Marketing"
Title = "Marketing Hub"
Description = "Hub for the Marketing division"
LogoUrl = "https://office365dsc.sharepoint.com/sites/Marketing/SiteAssets/hublogo.png"
RequiresJoinApproval = $true
AllowedToJoin = @("[email protected]","[email protected]")
SiteDesignId = "f7eba920-9cca-4de8-b5aa-1da75a2a893c"
Ensure = "Present"
CentralAdminUrl = "https://office365dsc-admin.sharepoint.com"
GlobalAdminAccount = $credsGlobalAdmin
}
N/A
Just install Office365DSC today and import-module Office365DSC run Export-O365Configuration unselect all and select only SharePoint and start Extraction
PS C:\office365dsc> Export-O365Configuration
Extracting O365AdminAuditLogConfig...
Extracting O365Group...
Office365 Group {Cinema}
Extracting O365User...
User {[email protected]}
User {[email protected]}
User {[email protected]}
Extracting SPOSearchResultSource...
Extracting SPOSearchManagedProperty...
Extracting SPOSiteDesignRights...
Extracting SPOSite...
Site Collection {https://TenantID.sharepoint.com/}
Site Collection {https://TenantID.sharepoint.com/search}
Site Collection {https://TenantID-my.sharepoint.com/}
Site Collection {https://TenantID.sharepoint.com/portals/hub}
Site Collection {https://TenantID.sharepoint.com/sites/Cinema}
Extracting TeamsMessageSettings...
Team Member Settings for Team {Cinema}
At this stage a popup "Microsfot.NET Framework" arrives with error just click to Continue that cancel this operation
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Management.Automation.CmdletInvocationException: The term 'Get-TeamMessagingSettings' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. ---> System.Management.Automation.CommandNotFoundException: The term 'Get-TeamMessagingSettings' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
at System.Management.Automation.Interpreter.ActionCallInstruction2.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0) at System.Management.Automation.PSScriptCmdlet.RunClause(Action
1 clause, Object dollarUnderbar, Object inputToProcess)
at System.Management.Automation.PSScriptCmdlet.DoEndProcessing()
at System.Management.Automation.CommandProcessorBase.Complete()
--- End of inner exception stack trace ---
at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
at System.Management.Automation.Interpreter.ActionCallInstruction2.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame) at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0) at System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary
2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object[] args) at System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.<InvokeWithPipe>b__0() at System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action) at System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List
1 variablesToDefine, Dictionary`2 functionsToDefine, Object[] args)
at System.Management.Automation.ScriptBlock.InvokeAsDelegateHelper(Object dollarUnder, Object dollarThis, Object[] args)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
# insert configuration here
``
#### The operating system the target node is running
<!--
Please provide as much as possible about the target node, for example
edition, version, build and language.
On OS with WMF 5.1 the following command can help get this information.
Get-ComputerInfo -Property @(
'OsName',
'OsOperatingSystemSKU',
'OSArchitecture',
'WindowsVersion',
'WindowsBuildLabEx',
'OsLanguage',
'OsMuiLanguages')
-->
OsName :
OsOperatingSystemSKU :
OsArchitecture :
WindowsVersion : 1803
WindowsBuildLabEx : 17134.1.amd64fre.rs4_release.180410-1804
OsLanguage :
OsMuiLanguages :
#### Version of the DSC module that was used ('dev' if using current dev branch)
New Resource
Hi, while running the Export-O365Configuration I get this:
Every 60 Seconds the same warning appear and it doesn't seem to go through.
Extracting EXOSharedMailbox...
WARNING: Exceeded max number of connections. Waiting 60 seconds
WARNING: Exceeded max number of connections. Waiting 60 seconds
WARNING: Exceeded max number of connections. Waiting 60 seconds
WARNING: Exceeded max number of connections. Waiting 60 seconds
Thanks
Hi I'm having the following error with 1.0.0.744
PS C:\WINDOWS\system32> Install-Module Office365DSC -RequiredVersion 1.0.0.744 -force
PS C:\WINDOWS\system32> Import-Module Office365DSC -RequiredVersion 1.0.0.744 -Force
.
PS C:\WINDOWS\system32> Export-O365Configuration
1 value) at OfficeDevPnP.Core.AuthenticationManager.<AcquireTokenAsync>d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at OfficeDevPnP.Core.AuthenticationManager.EnsureAzureADCredentialsToken(String resourceUri, String userPrincipalName , String userPassword) at OfficeDevPnP.Core.AuthenticationManager.<>c__DisplayClass30_0.<GetAzureADCredentialsContext>b__0(Object sender, We bRequestEventArgs args) at Microsoft.SharePoint.Client.ClientRuntimeContext.OnExecutingWebRequest(WebRequestEventArgs args) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters , CultureInfo culture) at OfficeDevPnP.Core.PnPClientContext.<>c__DisplayClass12_0.<ConvertFrom>b__0(Object oSender, WebRequestEventArgs web RequestEventArgs) at System.EventHandler
1.Invoke(Object sender, TEventArgs e)New Resource
Currently there is only one example in the Examples folder. There should be an example for each available resource.
Getting the following error when trying to load the module with Import-Module Office365DSC -Verbose. This is due to multiple versions of the Microsoft.Online.SharePoint.PowerShell modules installed side-by-side.
VERBOSE: Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\Office365DSC\1.0.0\Office365DSC.psd1'.
Import-Module : Could not load type 'Microsoft.SharePoint.Administration.DesignPackageType' from assembly
'Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
VERBOSE: Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\Office365DSC\1.0.0\Office365DSC.psd1'.
Import-Module : Could not load type 'Microsoft.SharePoint.Administration.DesignPackageType' from assembly
'Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
# insert configuration here
New Resource
AppVeyor automatically grabs the SharePoint Online Management Shell msi from the web and installs it on the Build Agent. However, whenever the link changes (new version released) like it happened on January 2nd, then AppVeyor crashes because it gets a 404 trying to download the msi. We need to upload a static version to some stable location.
N/A
N/A
N/A
N/A
N/A
N/A
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.