Skip to content

Commit b088f51

Browse files
committed
Merge branch 'main' into DMARCQ-chrisda
2 parents 76ba2c0 + ec320e8 commit b088f51

File tree

172 files changed

+6871
-1858
lines changed

Some content is hidden

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

172 files changed

+6871
-1858
lines changed

.openpublishing.redirection.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6919,6 +6919,21 @@
69196919
"source_path": "exchange/virtual-folder/exchange/Update-EOPDistributionGroupMember.md",
69206920
"redirect_url": "/powershell/module/exchange/update-distributiongroupmember",
69216921
"redirect_document_id": false
6922+
},
6923+
{
6924+
"source_path": "exchange/virtual-folder/exchange/Get-DefaultTenantBriefingConfig.md",
6925+
"redirect_url": "/viva/insights/personal/reference/briefing-pause",
6926+
"redirect_document_id": false
6927+
},
6928+
{
6929+
"source_path": "exchange/virtual-folder/exchange/Set-DefaultTenantBriefingConfig.md",
6930+
"redirect_url": "/viva/insights/personal/reference/briefing-pause",
6931+
"redirect_document_id": false
6932+
},
6933+
{
6934+
"source_path": "teams/teams-ps/teams/New-CsTeamsShiftsConnectionTeamMap.yml",
6935+
"redirect_url": "https://review.learn.microsoft.com/en-us/powershell/module/teams/",
6936+
"redirect_document_id": false
69226937
}
69236938
]
69246939
}

exchange/docfx.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
"overwrite": [],
7676
"externalReference": [],
7777
"globalMetadata": {
78+
"uhfHeaderId": "MSDocsHeader-M365-IT",
7879
"author": "chrisda",
7980
"ms.author": "chrisda",
8081
"manager": "serdars",

exchange/docs-conceptual/app-only-auth-powershell-v2.md

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: App-only authentication in Exchange Online PowerShell and Security & Comp
33
ms.author: chrisda
44
author: chrisda
55
manager: dansimp
6-
ms.date: 01/31/2023
6+
ms.date: 4/20/2023
77
ms.audience: Admin
88
audience: Admin
99
ms.topic: article
@@ -44,10 +44,6 @@ Certificate based authentication (CBA) or app-only authentication as described i
4444
>
4545
> You can use Microsoft Graph to replace most of the functionality from those cmdlets. For more information, see [Working with groups in Microsoft Graph](/graph/api/resources/groups-overview).
4646
>
47-
> - In Security & Compliance PowerShell, you can't use the procedures in this article with the following cmdlets:
48-
> - [Get-ComplianceCase](/powershell/module/exchange/get-compliancecase)
49-
> - [Get-CaseHoldPolicy](/powershell/module/exchange/get-caseholdpolicy)
50-
>
5147
> - Delegated scenarios are supported in Exchange Online. The recommended method for connecting with delegation is using GDAP and App Consent. For more information, see [Use the Exchange Online PowerShell v3 Module with GDAP and App Consent](/powershell/partnercenter/exchange-online-gdap-app). You can also use multi-tenant applications when CSP relationships are not created with the customer. The required steps for using multi-tenant applications are called out within the regular instructions in this article.
5248
>
5349
> - If the procedures in this article don't work for you, verify that you don't have Beta versions of the PackageManagement or PowerShellGet modules installed by running the following command: `Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions`.
@@ -166,7 +162,7 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
166162
167163
![Screenshot that shows App registrations in the Search results on the home page of the Azure portal.](media/exo-app-only-auth-find-app-registrations.png)
168164
169-
Or, to go directly to the **App registrations** page, use <https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps>.
165+
Or, to go directly to the **App registrations** page, use <https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade>.
170166
171167
3. On the **App registrations** page, click **New registration**.
172168
@@ -219,6 +215,25 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
219215
],
220216
```
221217

218+
> [!NOTE]
219+
> Microsoft 365 GCC High or DoD environments have access to Security & Compliance PowerShell only. Use the following values for `resourceAppId`, `resourceAccess id`, and `resourceAccess type`:
220+
>
221+
> ```json
222+
> "requiredResourceAccess": [
223+
> {
224+
> "resourceAppId": "00000007-0000-0ff1-ce00-000000000000",
225+
> "resourceAccess": [
226+
> {
227+
> "id": "455e5cd2-84e8-4751-8344-5672145dfa17",
228+
> "type": "Role"
229+
> }
230+
> ]
231+
> }
232+
> ],
233+
> ```
234+
>
235+
>
236+
222237
When you're finished, click **Save**.
223238
224239
3. Still on the **Manifest** page, under **Management**, select **API permissions**.
@@ -314,7 +329,7 @@ For more information about the URL syntax, see [Request the permissions from a d
314329
You have two options:
315330

316331
- **Assign Azure AD roles to the application**: This method is supported in Exchange Online PowerShell and Security & Compliance PowerShell.
317-
- **Assign custom Exchange Online role groups to the application**: Currently, this method is supported only in Exchange Online PowerShell, and only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module) (don't use the _UseRPSSession_ switch in the **Connect-ExchangeOnline** command).
332+
- **Assign custom Exchange Online role groups to the application using service principals**: Currently, this method is supported only in Exchange Online PowerShell, and only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module) (don't use the _UseRPSSession_ switch in the **Connect-ExchangeOnline** command).
318333

319334
> [!NOTE]
320335
> You can also combine both methods to assign permissions. For example, you can use Azure AD roles for the "Exchange Recipient Administrator" role and also assign your custom RBAC role to extend the permissions.
@@ -390,14 +405,16 @@ For general instructions about assigning roles in Azure AD, see [View and assign
390405

391406
![The role assignments page after to added the app to the role for Security & Compliance PowerShell.](media/exo-app-only-auth-app-assigned-to-role-scc.png)
392407

393-
#### Assign custom Exchange Online role groups to the application
408+
#### Assign custom Exchange Online role groups to the application using service principals
394409

395410
> [!NOTE]
396-
> Remember, this method is supported only in Exchange Online PowerShell, and only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module) (don't use the _UseRPSSession_ switch in the **Connect-ExchangeOnline** command).
411+
> You need to connect to Exchange Online PowerShell or Security & Compliance PowerShell _before_ completing steps to create a new service principal. Creating a new service principal without connecting to PowerShell won't work (your Azure App ID and Object ID is needed to create the new service principal).
412+
>
413+
> This method is supported only in Exchange Online PowerShell, and only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module) (don't use the _UseRPSSession_ switch in the **Connect-ExchangeOnline** command).
397414
398415
For information about creating custom role groups, see [Create role groups](/exchange/permissions-exo/role-groups#create-role-groups). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
399416

400-
To assign custom Exchange Online role groups to the application, do the following steps:
417+
To assign custom role groups to the application using service principals, do the following steps:
401418

402419
1. In [Azure Active Directory PowerShell for Graph](/powershell/azure/active-directory/install-adv2), run the following command to store the details of the Azure application that you registered in [Step 1](#step-1-register-the-application-in-azure-ad) in a variable:
403420

@@ -413,8 +430,8 @@ To assign custom Exchange Online role groups to the application, do the followin
413430

414431
For detailed syntax and parameter information, see [Get-AzureADServicePrincipal](/powershell/module/azuread/get-azureadserviceprincipal).
415432

416-
2. In the same PowerShell window, connect to [Exchange Online PowerShell](connect-to-exchange-online-powershell.md) and run the following commands to:
417-
- Create an Exchange Online service principal object for the Azure application.
433+
2. In the same PowerShell window, connect to [Exchange Online PowerShell](connect-to-exchange-online-powershell.md) or [Security & Compliance PowerShell](connect-to-scc-powershell.md) and run the following commands to:
434+
- Create a service principal object for the Azure application.
418435
- Store the details of the service principal in a variable.
419436

420437
```powershell
@@ -433,7 +450,7 @@ To assign custom Exchange Online role groups to the application, do the followin
433450

434451
For detailed syntax and parameter information, see [New-ServicePrincipal](/powershell/module/exchange/new-serviceprincipal).
435452

436-
3. In Exchange Online PowerShell, run the following command to add the service principal as a member of the custom role group:
453+
3. In Exchange Online PowerShell or Security & Compliance PowerShell, run the following command to add the service principal as a member of the custom role group:
437454

438455
```powershell
439456
Add-RoleGroupMember -Identity "<CustomRoleGroupName>" -Member <$<VariableName2>.Identity | $<VariableName2>.ServiceId | $<VariableName2>.Id>

exchange/docs-conceptual/connect-exo-powershell-managed-identity.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ To assign a role to the managed identity in Microsoft Graph PowerShell, do the f
375375

376376
```powershell
377377
$RoleID = (Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq '<Role Name>'").Id
378-
378+
379379
New-MgRoleManagementDirectoryRoleAssignment -PrincipalId $MI_ID -RoleDefinitionId $RoleID -DirectoryScopeId "/"
380380
```
381381

@@ -386,7 +386,7 @@ To assign a role to the managed identity in Microsoft Graph PowerShell, do the f
386386

387387
```powershell
388388
$RoleID = (Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Exchange Administrator'").Id
389-
389+
390390
New-MgRoleManagementDirectoryRoleAssignment -PrincipalId $MI_ID -RoleDefinitionId $RoleID -DirectoryScopeId "/"
391391
```
392392

exchange/docs-conceptual/connect-to-exchange-online-powershell.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ The connection examples in the following sections use modern authentication, and
165165
2. On any other device with a web browser and internet access, open <https://microsoft.com/devicelogin> and enter the \<XXXXXXXXX\> code value from the previous step.
166166
167167
3. Enter your credentials on the resulting pages.
168-
168+
169169
4. In the confirmation prompt, click **Continue**. The next message should indicate success, and you can close the browser or tab.
170170
171171
5. The command from step 1 continues to connect you to Exchange Online PowerShell.
@@ -240,6 +240,18 @@ If you receive errors, check the following requirements:
240240

241241
- If your organization uses federated authentication, and your identity provider (IDP) and/or security token service (STS) isn't publicly available, you can't use a federated account to connect to Exchange Online PowerShell. Instead, create and use a non-federated account in Microsoft 365 to connect to Exchange Online PowerShell.
242242

243+
- REST-based connections to Exchange Online PowerShell require the PowerShellGet module, and by dependency, the PackageManagement module, so you'll receive errors if you try to connect without having them installed. For example, you might see the following error:
244+
245+
> The term 'Update-ModuleManifest' 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.
246+
247+
For more information about the PowerShellGet and PackageManagement module requirements, see [PowerShellGet for REST-based connections in Windows](exchange-online-powershell-v2.md#powershellget-for-rest-based-connections-in-windows).
248+
249+
- After you connect, you might received an error that looks like this:
250+
251+
> Could not load file or assembly 'System.IdentityModel.Tokens.Jwt,Version=\<Version\>, Culture=neutral, PublicKeyToken=\<TokenValue\>'. Could not find or load a specific file.
252+
253+
This error happens when the Exchange Online PowerShell module conflicts with another module that's imported into the runspace. Try connecting in a new Windows PowerShell window before importing other modules.
254+
243255
## Appendix: Comparison of old and new connection methods
244256

245257
This section attempts to compare older connection methods that have been replaced by the Exchange Online PowerShell module. The Basic authentication and OAuth token procedures are included for historical reference only and are no longer supported.

exchange/docs-conceptual/connect-to-exchange-online-protection-powershell.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ For more information about Exchange Online Protection PowerShell, see [Exchange
2828
> Version 2.0.5 and earlier is known as the Exchange Online PowerShell V2 module (abbreviated as the EXO V2 module). Version 3.0.0 and later is known as the Exchange Online PowerShell V3 module (abbreviated as the EXO V3 module).
2929
>
3030
> As of June 2020, the instructions for connecting to standalone Exchange Online Protection PowerShell and Exchange Online PowerShell are basically the same. If you use the **Connect-IPPSSession** cmdlet with the _ConnectionUri_ parameter value `https://ps.protection.outlook.com/powershell-liveid/`, you're redirected to the same `https://outlook.office365.com/powershell-liveid/` endpoint that's used by **Connect-ExchangeOnline** for Exchange Online PowerShell connections.
31-
>
31+
>
3232
> Remote PowerShell support in Exchange Online PowerShell will be deprecated. For more information, see [Announcing Deprecation of Remote PowerShell (RPS) Protocol in Exchange Online PowerShell](https://aka.ms/RPSDeprecation).
3333
3434
## What do you need to know before you begin?

0 commit comments

Comments
 (0)