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 RemoteSigned

PowershellGet 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 AllUsers

Ardından modülü oturumunuza aktarabilirsiniz:

Import-Module ExchangeOnlineManagement

Modülün kurulu olduğundan emin olun. Sürümü de görüntülenir (benim durumumda 2.0.5):

Get-Module ExchangeOnlineManagement

Betiklerinizde, aşağıdaki komutu kullanarak modülün kurulu olduğundan emin olabilirsiniz:

(Get-Module -ListAvailable -Name ExchangeOnlineManagement) -ne $null

EXOv2 modülünü güncellemek için aşağıdaki komutu kullanın:

Update-Module ExchangeOnlineManagement

PowerShell 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 $true

Kullanı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

-InlineCredential

konsolunuza 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.com

Hesap 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 $true

Aş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 jsergo

POP ve IMAP erişimine izin verilen kullanıcıları göstermek için:

Get-EXOCasMailbox -PropertySets Imap,pop

Tüm posta kutularının boyutunu görüntülemek için:

Get-EXOMailbox | Get-EXOMailboxStatistics

Tüm paylaşılan posta kutularının boyutu:

Get-EXOMailbox | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"} | Get-EXOMailboxStatistics

ExchangeOnlineManagement 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,CurrentModuleName

Oluşturulan oturum adını kullanarak kullanılabilir cmdlet'lerin bir listesini alabilirsiniz:

Get-Command -Module tmp_4amp2awk.dga

Kullanı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'}

İlgili makaleler