Skip to content

Commit 4daea7e

Browse files
committed
Merge branch 'main' into QuarDLP-chrisda
2 parents 4a1aa7a + d504cda commit 4daea7e

File tree

178 files changed

+3526
-1514
lines changed

Some content is hidden

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

178 files changed

+3526
-1514
lines changed

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: New feedback experience
4+
url: https://learn.microsoft.com/office/new-feedback
5+
about: We’re transitioning our feedback experience away from GitHub Issues. For more information, select Open.

.openpublishing.redirection.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6934,6 +6934,16 @@
69346934
"source_path": "exchange/docs-conceptual/v1-module-mfa-connect-to-scc-powershell.md",
69356935
"redirect_url": "/powershell/exchange/connect-to-scc-powershell",
69366936
"redirect_document_id": false
6937+
},
6938+
{
6939+
"source_path": "exchange/virtual-folder/exchange/Get-AdvancedThreatProtectionDocumentDetail.md",
6940+
"redirect_url": "/powershell/module/exchange/get-contentmalwaremdodetailreport",
6941+
"redirect_document_id": false
6942+
},
6943+
{
6944+
"source_path": "exchange/virtual-folder/exchange/Get-AdvancedThreatProtectionDocumentReport.md",
6945+
"redirect_url": "/powershell/module/exchange/get-contentmalwaremdoaggregatereport",
6946+
"redirect_document_id": false
69376947
}
69386948
]
69396949
}

exchange/docfx.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,8 @@
8787
"https://authoring-docs-microsoft.poolparty.biz/devrel/8bce367e-2e90-4b56-9ed5-5e4e9f3a2dc3"
8888
],
8989
"ms.devlang": "powershell",
90-
"feedback_system": "GitHub",
91-
"feedback_github_repo": "MicrosoftDocs/office-docs-powershell",
92-
"feedback_product_url": "https://github.com/MicrosoftDocs/office-docs-powershell/issues"
90+
"feedback_system": "Standard",
91+
"feedback_product_url": "https://github.com/MicrosoftDocs/office-docs-powershell/issues"
9392
},
9493
"fileMetadata": {
9594
"apiPlatform": {

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

Lines changed: 6 additions & 4 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: 8/25/2023
6+
ms.date: 12/12/2023
77
ms.audience: Admin
88
audience: Admin
99
ms.topic: article
@@ -45,6 +45,10 @@ Certificate based authentication (CBA) or app-only authentication as described i
4545
>
4646
> 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).
4747
>
48+
> - In Security & Compliance PowerShell, you can't use the procedures in this article with the following Microsoft 365 Group cmdlets:
49+
> - [Get-ComplianceSearchAction](/powershell/module/exchange/get-compliancesearchaction)
50+
> - [New-ComplianceSearch](/powershell/module/exchange/new-compliancesearch)
51+
>
4852
> - 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.
4953
>
5054
> - Use the _SkipLoadingFormatData_ switch on the **Connect-ExchangeOnline** cmdlet if you get the following error when using the Windows PowerShell SDK to connect: `The term 'Update-ModuleManifest' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.`
@@ -62,8 +66,6 @@ The following examples show how to use the Exchange Online PowerShell module wit
6266
>
6367
> The following connection commands have many of the same options available as described in [Connect to Exchange Online PowerShell](connect-to-exchange-online-powershell.md) and [Connect to Security & Compliance PowerShell](connect-to-scc-powershell.md). For example:
6468
>
65-
> Remote PowerShell connections are deprecated in Exchange Online PowerShell and will be deprecated in Security & Compliance PowerShell. For more information, see [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-in-exchange-online-re-enabling/ba-p/3779692) and [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-rps-protocol-in-security-and/ba-p/3815432).
66-
>
6769
> - Microsoft 365 GCC High or Microsoft 365 DoD environments require the following additional parameters and values:
6870
> - **Connect-ExchangeOnline in GCC High**: `-ExchangeEnvironmentName O365USGovGCCHigh`.
6971
> - **Connect-IPPSSession in GCC High**: `-ConnectionUri https://ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common`.
@@ -486,7 +488,7 @@ For general instructions about assigning roles in Microsoft Entra ID, see [View
486488
>
487489
> This method is supported only when you connect to Exchange Online PowerShell or Security & Compliance PowerShell in [REST API mode](exchange-online-powershell-v2.md#rest-api-connections-in-the-exo-v3-module). Security & Compliance PowerShell supports REST API mode in v3.2.0 or later.
488490
489-
For information about creating custom role groups, see [Create role groups in Exchange Online](/exchange/permissions-exo/role-groups#create-role-groups) and [Create Email & collaboration role groups in the Microsoft 365 Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions#create-email--collaboration-role-groups-in-the-microsoft-365-defender-portal). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
491+
For information about creating custom role groups, see [Create role groups in Exchange Online](/exchange/permissions-exo/role-groups#create-role-groups) and [Create Email & collaboration role groups in the Microsoft Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions#create-email--collaboration-role-groups-in-the-microsoft-365-defender-portal). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
490492

491493
To assign custom role groups to the application using service principals, do the following steps:
492494

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Connect to Security & Compliance PowerShell
33
author: chrisda
44
manager: dansimp
5-
ms.date: 11/7/2023
5+
ms.date: 12/12/2023
66
ms.audience: Admin
77
audience: Admin
88
ms.topic: article
@@ -33,7 +33,7 @@ To connect to Security & Compliance PowerShell for automation, see [App-only aut
3333
>
3434
> REST API connections in the Exchange Online PowerShell V3 module require the PowerShellGet and PackageManagement modules. For more information, see [PowerShellGet for REST-based connections in Windows](exchange-online-powershell-v2.md#powershellget-for-rest-based-connections-in-windows).
3535
36-
- After you connect, the cmdlets and parameters that you have or don't have access to is controlled by role-based access control (RBAC). For more information, see [Permissions in the Microsoft 365 Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions) and [Permissions in the Microsoft Purview compliance portal](/microsoft-365/compliance/microsoft-365-compliance-center-permissions).
36+
- After you connect, the cmdlets and parameters that you have or don't have access to is controlled by role-based access control (RBAC). For more information, see [Permissions in the Microsoft Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions) and [Permissions in the Microsoft Purview compliance portal](/microsoft-365/compliance/microsoft-365-compliance-center-permissions).
3737

3838
## Step 1: Load the Exchange Online PowerShell module
3939

@@ -171,8 +171,6 @@ If you receive errors, check the following requirements:
171171

172172
- A common problem is an incorrect password. Run the three steps again and pay close attention to the username and password that you use.
173173

174-
- To help prevent denial-of-service (DoS) attacks, when you connect using remote PowerShell mode, you're limited to five open connections to Security & Compliance PowerShell.
175-
176174
- The account that you use to connect must be enabled for PowerShell. For more information, see [Enable or disable access to Exchange Online PowerShell](disable-access-to-exchange-online-powershell.md).
177175

178176
- TCP port 80 traffic needs to be open between your local computer and Microsoft 365. It's probably open, but it's something to consider if your organization has a restrictive internet access policy.

exchange/docs-conceptual/exchange-online-powershell-v2.md

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: About the Exchange Online PowerShell V3 module
33
ms.author: chrisda
44
author: chrisda
55
manager: dansimp
6-
ms.date: 11/7/2023
6+
ms.date: 12/12/2023
77
ms.audience: Admin
88
audience: Admin
99
ms.topic: article
@@ -38,7 +38,7 @@ The rest of this article explains how the module works, how to install and maint
3838
3939
## REST API connections in the EXO V3 module
4040

41-
All available cmdlets in Exchange Online PowerShell and [virtually all cmdlets](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-rps-protocol-in-security-and/ba-p/3815432) in Security & Compliance PowerShell are backed by a REST API based on the version of the EXO V3 module:
41+
All available cmdlets in Exchange Online PowerShell and Security & Compliance PowerShell are backed by a REST API based on the version of the EXO V3 module:
4242

4343
- **Exchange Online PowerShell**: v3.0.0 or later.
4444
- **Security & Compliance PowerShell**: v3.2.0 or later.
@@ -67,36 +67,36 @@ REST API cmdlets have the same cmdlet names and work just like their remote Powe
6767
> [!TIP]
6868
> The [Invoke-Command](/powershell/module/microsoft.powershell.core/invoke-command) cmdlet doesn't work in REST API connections. For alternatives, see [Workarounds for Invoke-Command scenarios in REST API connections](invoke-command-workarounds-rest-api.md).
6969
70-
Consider the following items for connections in remote PowerShell mode:
71-
72-
- Remote PowerShell connections are deprecated in Exchange Online PowerShell and will be deprecated in Security & Compliance PowerShell. For more information, see [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-in-exchange-online-re-enabling/ba-p/3779692) and [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-rps-protocol-in-security-and/ba-p/3815432).
73-
- Remote PowerShell connections require [Basic authentication in WinRM](#turn-on-basic-authentication-in-winrm) on the client computer. If you don't connect in remote PowerShell mode, you have access to REST API cmdlets _only_.
74-
- A few REST API cmdlets in Exchange Online PowerShell have been updated with the experimental _UseCustomRouting_ switch. This switch routes the command directly to the required Mailbox server, and might improve overall performance.
75-
- When you use the _UseCustomRouting_ switch, you can use only the following values for identity of the mailbox:
76-
- User principal name (UPN)
77-
- Email address
78-
- Mailbox GUID
79-
- The _UseCustomRouting_ switch is available only on the following REST API cmdlets in Exchange Online PowerShell:
80-
- **Get-Clutter**
81-
- **Get-FocusedInbox**
82-
- **Get-InboxRule**
83-
- **Get-MailboxAutoReplyConfiguration**
84-
- **Get-MailboxCalendarFolder**
85-
- **Get-MailboxFolderPermission**
86-
- **Get-MailboxFolderStatistics**
87-
- **Get-MailboxMessageConfiguration**
88-
- **Get-MailboxPermission**
89-
- **Get-MailboxRegionalConfiguration**
90-
- **Get-MailboxStatistics**
91-
- **Get-MobileDeviceStatistics**
92-
- **Get-UserPhoto**
93-
- **Remove-CalendarEvents**
94-
- **Set-Clutter**
95-
- **Set-FocusedInbox**
96-
- **Set-MailboxRegionalConfiguration**
97-
- **Set-UserPhoto**
98-
99-
Use the _UseCustomRouting_ switch experimentally and [report any issues](#report-bugs-and-issues-for-the-exchange-online-powershell-module) that you encounter.
70+
Basic authentication (Remote PowerShell) connections are deprecated in Exchange Online PowerShell and Security & Compliance PowerShell. For more information, see [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-in-exchange-online-re-enabling/ba-p/3779692) and [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-rps-protocol-in-security-and/ba-p/3815432).
71+
72+
A few REST API cmdlets in Exchange Online PowerShell have been updated with the experimental _UseCustomRouting_ switch. This switch routes the command directly to the required Mailbox server, and might improve overall performance.
73+
74+
- When you use the _UseCustomRouting_ switch, you can use only the following values for identity of the mailbox:
75+
- User principal name (UPN)
76+
- Email address
77+
- Mailbox GUID
78+
79+
- The _UseCustomRouting_ switch is available only on the following REST API cmdlets in Exchange Online PowerShell:
80+
- **Get-Clutter**
81+
- **Get-FocusedInbox**
82+
- **Get-InboxRule**
83+
- **Get-MailboxAutoReplyConfiguration**
84+
- **Get-MailboxCalendarFolder**
85+
- **Get-MailboxFolderPermission**
86+
- **Get-MailboxFolderStatistics**
87+
- **Get-MailboxMessageConfiguration**
88+
- **Get-MailboxPermission**
89+
- **Get-MailboxRegionalConfiguration**
90+
- **Get-MailboxStatistics**
91+
- **Get-MobileDeviceStatistics**
92+
- **Get-UserPhoto**
93+
- **Remove-CalendarEvents**
94+
- **Set-Clutter**
95+
- **Set-FocusedInbox**
96+
- **Set-MailboxRegionalConfiguration**
97+
- **Set-UserPhoto**
98+
99+
Use the _UseCustomRouting_ switch experimentally and [report any issues](#report-bugs-and-issues-for-the-exchange-online-powershell-module) that you encounter.
100100

101101
- Use the [Get-ConnectionInformation](/powershell/module/exchange/get-connectioninformation) cmdlet to get information about REST-based connections to Exchange Online PowerShell and Security & Compliance PowerShell. This cmdlet is required because the [Get-PSSession](/powershell/module/microsoft.powershell.core/get-pssession) cmdlet in Windows PowerShell doesn't return information for REST-based connections.
102102

@@ -105,12 +105,10 @@ Consider the following items for connections in remote PowerShell mode:
105105
|Scenario|Expected output|
106106
|---|---|
107107
|Run before a **Connect-ExchangeOnline** or **Connect-IPPSSession** command.|Returns nothing.|
108-
|Run after a **Connect-ExchangeOnline** or **Connect-IPPSSession** command that connects in remote PowerShell mode.|Returns nothing (use [Get-PSSession](/powershell/module/microsoft.powershell.core/get-pssession)).|
109108
|Run after **Connect-ExchangeOnline** or **Connect-IPPSSession** command that connects in REST API mode.|Returns one connection information object.|
110109
|Run after multiple REST-based **Connect-ExchangeOnline** or **Connect-IPPSSession** commands.|Returns a collection of connection information objects.|
111-
|Run after multiple **Connect-ExchangeOnline** or **Connect-IPPSSession** commands that connect in remote PowerShell mode and REST API mode.|Returns one connection information object for each REST-based session.|
112110

113-
- Use the _SkipLoadingFormatData_ switch on the **Connect-ExchangeOnline** cmdlet in REST-based connections to avoid loading format data and to run **Connect-ExchangeOnline** commands faster.
111+
- Use the _SkipLoadingFormatData_ switch on the **Connect-ExchangeOnline** cmdlet to avoid loading format data and to run **Connect-ExchangeOnline** commands faster.
114112

115113
- Cmdlets backed by the REST API have a 15 minute timeout, which can affect bulk operations. For example, the following **Update-DistributionGroupMember** command to update 10000 members of a distribution group might time out:
116114

@@ -312,9 +310,9 @@ For more information about execution policies, see [About Execution Policies](/p
312310
#### Turn on Basic authentication in WinRM
313311

314312
> [!NOTE]
315-
> As described [earlier in this article](#rest-api-connections-in-the-exo-v3-module), the information in this section applies to remote PowerShell connections only. Remote PowerShell connections to Exchange Online PowerShell and Security & Compliance PowerShell will be retired. For more information, see [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-in-exchange-online-re-enabling/ba-p/3779692) and [here](https://techcommunity.microsoft.com/t5/exchange-team-blog/deprecation-of-remote-powershell-rps-protocol-in-security-and/ba-p/3815432). REST-based connections don't require Basic authentication in WinRM as described in this section.
313+
> REST-based connections don't require Basic authentication in WinRM as described in this section. As described [earlier in this article](#rest-api-connections-in-the-exo-v3-module), Basic authentication (remote PowerShell) access to Exchange Online PowerShell and Security & Compliance PowerShell are deprecated. The information in this section is maintained for historical purposes.
316314
317-
For remote PowerShell connections only (not REST API connections), WinRM needs to allow Basic authentication. **We don't send the username and password combination**. The Basic authentication **header** is required to send the session's OAuth token, because the client-side implementation of WinRM doesn't support OAuth.
315+
For remote PowerShell connections that don't use the REST API (which are now impossible), WinRM needs to allow Basic authentication. **We don't send the username and password combination**. The Basic authentication **header** is required to send the session's OAuth token, because the client-side implementation of WinRM doesn't support OAuth.
318316

319317
To verify that Basic authentication is enabled for WinRM, run the following command in a **Command Prompt** or **Windows PowerShell**:
320318

@@ -345,15 +343,15 @@ If you don't see the value `Basic = true`, you need to run **one** of the follow
345343
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
346344
```
347345

348-
If Basic authentication for WinRM is disabled, you'll get one of the following errors when you try to connect:
346+
If Basic authentication for WinRM is disabled, you'll get one of the following errors when you try to connect using a Basic authentication (remote PowerShell) connection:
349347

350348
> The WinRM client cannot process the request. Basic authentication is currently disabled in the client configuration. Change the client configuration and try the request again.
351349
>
352350
> Create Powershell Session is failed using OAuth.
353351
354352
### PowerShellGet for REST-based connections in Windows
355353

356-
[REST-based connections](#rest-api-connections-in-the-exo-v3-module) in Windows require the PowerShellGet module, and by dependency, the PackageManagement module. Consideration for these modules is more for PowerShell 5.1 than PowerShell 7, but all version of PowerShell benefit from having the latest versions of the modules installed. For installation and update instructions, see [Installing PowerShellGet on Windows](/powershell/scripting/gallery/installing-psget).
354+
[REST-based connections](#rest-api-connections-in-the-exo-v3-module) in Windows require the PowerShellGet module, and by dependency, the PackageManagement module. Consideration for these modules is more for PowerShell 5.1 than PowerShell 7, but all versions of PowerShell benefit from having the latest versions of the modules installed. For installation and update instructions, see [Installing PowerShellGet on Windows](/powershell/scripting/gallery/installing-psget).
357355

358356
> [!NOTE]
359357
> Beta versions of the PackageManagement or PowerShellGet modules might cause connection issues. If you have connection issues, verify that you don't have Beta versions of the modules installed by running the following command: `Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions`.

exchange/docs-conceptual/find-exchange-cmdlet-permissions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ You can use PowerShell to find the permissions required to run any Exchange or E
2828
In cloud-based organizations, membership in the **Global Administrators** role in Microsoft Entra ID gives you the required permissions.
2929

3030
- The procedures in this article don't work in Security & Compliance PowerShell. For more information about Security & Compliance permissions, see the following articles:
31-
- [Permissions in the Microsoft 365 Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions)
31+
- [Permissions in the Microsoft Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions)
3232
- [Permissions in the Microsoft Purview compliance portal](/microsoft-365/compliance/microsoft-365-compliance-center-permissions)
3333

3434
> [!TIP]

0 commit comments

Comments
 (0)