PowerShell ile Çevrimiçi Exchange Nasıl Bağlanır ve Yönetilir
PowerShell, hem kurum içi Exchange Server kuruluşları hem de Microsoft 365'te bulut tabanlı Exchange Online için birincil yönetim aracıdır. Bu makalede, Exchange Online PowerShell v2'nin (EXO V2) nasıl kurulacağını göstereceğiz. ) modülü, Exchange Online kiracınıza bağlanma, posta kutularını ve diğer Microsoft 365 nesnelerini yönetme.
Şu anda Exchange Online'ı yönetmek için iki modül bulunduğunu unutmayın: Exchange Online PowerShell v1 ve modern Exchange Online PowerShell v2 (EXO v2). Eski bir modülü (eski betikler vb.) kullanmak için açık bir neden olmadıkça, her zaman EXO v2'yi kullanmayı deneyin: daha hızlı çalışır (yeni bir Azure AD modülü gibi, Microsoft Graph uygulamasındaki REST API'sini temel alır), cmdlet'ler birden fazla nesneyi işlemek için optimize edilmiştir, Basic yerine Modern kimlik doğrulama kullanılır, MFA kimlik doğrulaması desteklenir, ExchangeOnlineManagement 2.0.4 ve daha yeni sürümler PowerShell Core 6.x, 7x ve macOS, Ubuntu 18.04/20.04'te çalışır.
Exchange Online PowerShell V2 (EXO V2) Modülünü Kurun
Exchange Online PowerShell'i Windows'a yüklemek için PowerShell 5.x'e ihtiyacınız vardır (PowerShell Core, ExchangeOnlineManagement 2.0.4 veya daha yeni sürümlerde desteklenir).
Bilgisayarınızdaki PowerShell betiği yürütme ilkesi ayarları, yerel *.PS dosyalarının çalışmasına izin vermelidir:
Set-ExecutionPolicy RemoteSignedPowershellGet modülünü yükleyin ve güncelleyin:
Install-Module PowershellGet -Force
Update-Module PowershellGet
Tüm kullanıcılar için PowerShell Betik Galerisi'nden EXOv2 (ExchangeOnlineManagement) modülünü yüklemek üzere şu komutu çalıştırın:
Install-Module -Name ExchangeOnlineManagement -Force -Scope AllUsersArdından modülü oturumunuza aktarabilirsiniz:
Import-Module ExchangeOnlineManagementModülün kurulu olduğundan emin olun. Sürümü de görüntülenir (benim durumumda 2.0.5):
Get-Module ExchangeOnlineManagementBetiklerinizde, aşağıdaki komutu kullanarak modülün kurulu olduğundan emin olabilirsiniz:
(Get-Module -ListAvailable -Name ExchangeOnlineManagement) -ne $nullEXOv2 modülünü güncellemek için aşağıdaki komutu kullanın:
Update-Module ExchangeOnlineManagementPowerShell ile Exchange Online'a bağlanın
Exchange Online modülünü kullanarak Microsoft 365 kiracınıza bağlanmak için Connect-ExchangeOnline cmdlet'i kullanılır. Örneğin, genel yönetici rolüne sahip bir kullanıcının UPN'sini belirtebilirsiniz:
Connect-ExchangeOnline -UserPrincipalName max.bak@a-d.onmicrosoft.com -ShowProgress $trueKullanıcı parolasını girin ve MFA kullanarak oturum açmayı onaylayın (akıllı telefonunuzda Microsoft Authenticator uygulamasını kullanmak daha uygundur).
Bilgisayarda yüklü tarayıcı yoksa (örneğin, Linux veya Windows Server Core'dan Exchange Online'a bağlandığınızda), PowerShell Core 7.x için bir kimlik doğrulama kodu ve aşağıdaki gibi girmek için bir kutu görüntüleyebilirsiniz:
Connect-ExchangeOnline -Device
Tarayıcılı başka bir bilgisayarda sahip olduğunuz URL'yi ve kodu kullanın.
Veya
-InlineCredentialkonsolunuza etkileşimli olarak bir parola girme seçeneği.
Hesabınızın birden çok Azure kiracısına erişimi varsa DelegatedOrganization seçeneğini kullanarak kiracı adını belirtebilirsiniz:
Connect-ExchangeOnline -UserPrincipalName max.bak@a-d.onmicrosoft.com -ShowProgress $true -DelegatedOrganization a-dpreprod.onmicrosoft.comHesap için Modern Kimlik Doğrulama devre dışıysa, aşağıdaki şekilde bağlanabilirsiniz:
$cred = Get-Credential
Connect-ExchangeOnline -Credential $cred -UserPrincipalName max.bak@a-d.onmicrosoft.com -ShowProgress $trueAşağıda gösterildiği gibi Exchange Online'a etkin bir bağlantı olup olmadığından emin olabilirsiniz:
Get-PSSession| ft -AutoSizeÖrneğimizde, outlook.office365.com bağlantısı etkindir (Durum=
Opened).
Exchange Online ile çalışmayı bitirdikten sonra Disconnect-ExchangeOnline cmdlet'ini kullanarak oturumdan doğru şekilde çıkın. Sorun, Exchange Online'ın yalnızca 5 eşzamanlı PowerShell oturumunu desteklemesidir. Altıncıyı açmaya çalışırsanız, aşağıdaki hata görünür:
Fail to create a runspace because you have exceeded the maximum number of connections allowed.
EXOv2 modülü aracılığıyla Exchange Online bağlantısının etkin olduğundan emin olmak için PowerShell betiklerinizde aşağıdaki kodu kullanabilirsiniz. Microsoft 365 ile fazladan PowerShell oturumlarından kaçınmanıza olanak tanır.
$PSSessions = Get-PSSession | Select-Object -Property State, Name
If (((@($PSSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
Connect-ExchangeOnline -UserPrincipalName max.bak@a-d.onmicrosoft.com }Aşağıdaki makale, EXOv2 modülünü kurmadan şirket içi Exchange veya Exchange Online'a PowerShell aracılığıyla uzaktan nasıl bağlanılacağını açıklamaktadır:
https://a-d.site/connect-exchange-microsoft-365-remote-powershell/
ExchangeOnlineManagement Cmdlet'lerini Kullanarak Exchange Online'ı Yönetme
Bu komutu kullanarak EXOv2 modülündeki kullanılabilir cmdlet'lerin bir listesini görüntüleyebilirsiniz:
Get-Command -Module ExchangeOnlineManagementŞu anda 32 cmdlet kullanılabilir:
- Connect-ExchangeOnline
- Connect-IPPSSession
- Disconnect-ExchangeOnline
- Get-WrappedCommand
- IsCloudShellEnvironment
- UpdateImplicitRemotingHandler
- Get-EXOCasMailbox
- Get-EXOMailbox
- Get-EXOMailboxFolderPermission
- Get-EXOMailboxFolderStatistics
- Get-EXOMailboxPermission
- Get-EXOMailboxStatistics
- Get-EXOMobileDeviceStatistics
- Get-EXORecipient
- Get-EXORecipientPermission
- Get-MyAnalyticsFeatureConfig
- Get-OwnerlessGroupPolicy
- Get-UserBriefingConfig
- Get-VivaInsightsSettings
- Set-MyAnalyticsFeatureConfig
- Set-OwnerlessGroupPolicy
- Set-UserBriefingConfig
- Set-VivaInsightsSettings
Exchange Online modülündeki bazı cmdlet'lerin adlarının değiştiğini unutmayın. Çoğunun artık EXO son eki var. Örneğin, Get-Mailbox yerine Get-EXOMailbox, Get-MailboxPermission yerine Get-EXOMailboxPermission vb. kullanın. Bu nedenle, EXOv1 için herhangi bir komut dosyanız varsa, ihtiyacınız olacak EXOv2 ile kullanmak üzere bunları dikkatli bir şekilde güncellemek için.
Exchange kiracınızdaki posta kutularının listesini veya belirli bir posta kutusuyla ilgili bilgileri görüntüleyebilirsiniz:
Get-EXOMailbox |ft
Get-EXOMailbox jsergoPOP ve IMAP erişimine izin verilen kullanıcıları göstermek için:
Get-EXOCasMailbox -PropertySets Imap,popTüm posta kutularının boyutunu görüntülemek için:
Get-EXOMailbox | Get-EXOMailboxStatisticsTüm paylaşılan posta kutularının boyutu:
Get-EXOMailbox | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"} | Get-EXOMailboxStatisticsExchangeOnlineManagement modülünde Set-Mailbox cmdlet'i olmadığını unutmayın. Sorun, diğer kullanılabilir Exchange Online cmdlet'lerinin (750'den fazla) bir kiracıya bağlandıktan sonra PowerShell oturumunuza alınmasıdır. Her şeyden önce, bir oturum adı almalısınız:
Get-PSSession| select ConfigurationName,CurrentModuleNameOluşturulan oturum adını kullanarak kullanılabilir cmdlet'lerin bir listesini alabilirsiniz:
Get-Command -Module tmp_4amp2awk.dgaKullanıcının SMTP adresini değiştirmek için aşağıdaki komutu kullanabilirsiniz:
Get-EXOMailbox jsergo | Set-Mailbox -EmailAddresses @{Add='j.sergo@a-d.site'}




