Skip to content

Commit bb8fe9b

Browse files
authored
Merge pull request #11543 from MicrosoftDocs/chrisda
Chrisda to Main
2 parents 5727f53 + b7cd965 commit bb8fe9b

File tree

3 files changed

+43
-45
lines changed

3 files changed

+43
-45
lines changed

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

Lines changed: 5 additions & 3 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`.

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

Lines changed: 1 addition & 3 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
@@ -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`.

0 commit comments

Comments
 (0)