PowerShell ile Exchange Online'a Bağlanma - En İyi Yöntem


Exchange Online'daki bazı ayarlar yalnızca PowerShell ile değiştirilebilir. Peki PowerShell ile Exchange Online'a nasıl bağlanacaksınız? Özellikle MFA kullanırken veya betiğinizi bir zamanlama veya Azure Runbook ile otomatik olarak çalıştırmak istediğinizde.

PowerShell ayrıca Exchange Online'da posta kutusu ayarlarını değiştirmek, yeni bir posta kutusu eklemek veya ondan bilgi almak gibi birçok günlük görevi gerçekleştirmenin harika bir yoludur.

Bu makalede, PowerShell'de Exchange Online'a nasıl bağlanılacağına, modülün Azure Runbook'ta nasıl kullanılacağına ve daha fazlasına göz atacağız.

Exchange Online Modülünü Yükleyin

Exchange Online'a bağlanmadan önce EXO V3 Modülünü PowerShell'e kurmamız gerekiyor. PowerShell modülünü kurmak için PowerShell'i yükseltilmiş (yönetici) modda açacağız:

  1. PowerShell'i yükseltilmiş modda açın
    Windows tuşu + X 'e basın ve Windows PowerShell (yönetici)'yi seçin
  2. EXO V3 modülünü yükleyin
    Exchange Çevrimiçi Yönetim Modülünü yüklemek için aşağıdaki komutu yazın:
# Add -Force to it when you need to update EXO V3.
Install-Module -Name ExchangeOnlineManagement -Force
  1. Y'ye iki kez basın
    NuGet yüklü değilse ilk önce PowerShellGet'i yüklemeniz istenir. Sadece Y tuşuna basın. Güvenilmeyen depodan Exchange Online modülünü yüklemek için tekrar Y tuşuna basın

PowerShell ile Exchange Online'a bağlanın

Exchange Online'a bağlanmak için birkaç seçeneğiniz vardır. Yalnızca Connect-ExchangeOnline komutunu girerseniz Microsoft 365 hesabınızı girmeniz veya seçmeniz istenir. En son modül olan v3, MFA uyumlu olduğundan, MFA'nın etkin olduğu bir hesapla kimlik doğrulaması yapabilirsiniz.

Şahsen ben bağlantı için kullanmak istediğim hesabı belirtmeyi tercih ediyorum, bunu UserPrincipalName parametresini kullanarak yapabilirsiniz:

Connect-ExchangeOnline -UserPrincipalName john@contoso.com

Exchange Online'a bağlandıktan sonra varsayılan olarak EXO modülü hakkında bilgi içeren bir çıktı alacaksınız. -ShowBanner:$false parametresini kullanarak banner'ı gizleyebiliriz.

Connect-ExchangeOnline -UserPrincipalName john@contoso.com -ShowBanner:$false

Yeni EXO V3 modülü ayrıca başka bir kiracıya bağlanmayı da destekler. Microsoft İş Ortağıysanız veya birden fazla kiracıyı yönetiyorsanız -DelgatedOrganization parametresini ekleyerek başka bir kiracıya bağlanabilirsiniz:

Connect-ExchangeOnline -UserPrincipalName john@contoso.com -DelegatedOrganization contoso.onmicrosoft.com

EXO Modülünün kurulu olup olmadığını otomatik olarak kontrol edin

Exchange Online modülünü bir komut dosyasında mı kullanacaksınız? Daha sonra bağlanmayı denemeden önce modülün kurulu olup olmadığını otomatik olarak kontrol ettiğinizden emin olun.

Tek bir cmdlet kullanarak PowerShell'de kurulu tüm modülleri listeleyebiliriz. ExchangeOnlineManagement modülünün mevcut olduğunu doğrulayarak gereksiz hataları önleyebilirsiniz.

if ($null -ne (Get-Module -ListAvailable -Name ExchangeOnlineManagement)){
 # Your script goes here
}

Yukarıdaki cmd, kurulu Exchange Online modüllerinin bir listesini döndürmelidir. Sonuç boşsa (null), modülün kurulu olmadığını biliyoruz.

Exchange Online PowerShell Modülünü Güncelleyin

PowerShell modülleri, Exchange Online Modülü de dahil olmak üzere sıklıkla güncellenir. En son EXO v3 sürümü, PowerShell Modülünüzü güncellemeye değer kılan birkaç iyileştirmeyle birlikte gelir.

  • Daha iyi performans - Yeni EXO cmdlet'leri REST API tabanlıdır
  • Daha güvenli - V3, Modern Kimlik Doğrulamayı kullanır
  • Daha güvenilir
  • Sertifikaya dayalı kimlik doğrulama
  • UseRPSSession Switch - Mevcut tüm uzak PowerShell cmdlet'lerine erişim sağlar.

Exchange Online PowerShell Modülünü güncellemek için yükseltilmiş bir PowerShell penceresinde aşağıdaki komutu kullanabiliriz:

Update-Module -Name ExchangeOnlineManagement

Güncellemeyi şununla doğrulayın:

Get-Module ExchangeOnlineManagement

Yeni özelliklerden yararlanmak için Get-* cmdlet'lerinizi Get-EXO* karşılıklarına güncellediğinizden emin olun. Yeni cmdlet'lerin güncel listesini belgelerde bulabilirsiniz.

PowerShell için Exchange Online İşlevine Bağlanma

Aşağıdaki işlevin tamamı, Exchange Online'a bağlanmak için komut dosyalarında kullanılabilir. Bu işlev, Exchange Online modülünün kurulu olup olmadığını kontrol eder ve bu modülün sizin için otomatik olarak kurulması seçeneğinin sunulup sunulmadığını kontrol eder.

Ayrıca PowerShell'deki mevcut Exchange Online bağlantılarını da kontrol ederek aynı oturumdan birden fazla bağlantı kurulmasını engeller.

Function ConnectTo-EXO {
  <#
    .SYNOPSIS
        Connects to EXO when no connection exists. Checks for EXO v3 module
  #>
  param(
    [Parameter(
      Mandatory = $true
    )]
    [string]$adminUPN
  )
  
  process {
    # Check if EXO is installed and connect if no connection exists
    if ($null -eq (Get-Module -ListAvailable -Name ExchangeOnlineManagement))
    {
      Write-Host "Exchange Online PowerShell v3 module is requied, do you want to install it?" -ForegroundColor Yellow
      
      $install = Read-Host Do you want to install module? [Y] Yes [N] No 
      if($install -match "[yY]") { 
        Write-Host "Installing Exchange Online PowerShell v3 module" -ForegroundColor Cyan
        Install-Module ExchangeOnlineManagement -Repository PSGallery -AllowClobber -Force
      }else{
	      Write-Error "Please install EXO v3 module."
      }
    }

    if ($null -ne (Get-Module -ListAvailable -Name ExchangeOnlineManagement)) {
      # Check which version of Exchange Online is installed
      if (Get-Module -ListAvailable -Name ExchangeOnlineManagement | Where-Object {$_.version -like "3.*"} ) {
        # Check if there is a active EXO sessions
        if ((Get-ConnectionInformation).tokenStatus -ne 'Active') {
          write-host 'Connecting to Exchange Online' -ForegroundColor Cyan
          Connect-ExchangeOnline -UserPrincipalName $adminUPN
        }
      }else{
        # Check if there is a active EXO sessions
        $psSessions = Get-PSSession | Select-Object -Property State, Name
        If (((@($psSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
          write-host 'Connecting to Exchange Online' -ForegroundColor Cyan
          Connect-ExchangeOnline -UserPrincipalName $adminUPN
        }
      }
    }else{
      Write-Error "Please install EXO v3 module."
    }
  }
}

Exchange Online'a Yetki Verilen Yönetici (iş ortağı) olarak bağlanın

Birden fazla kiracıyı yönetiyorsanız Exchange Online'a da bağlanmanız gerekebilir. İstemcinin kiracısından özel bir yönetici oturum açma bilgisi kullanmak yerine Exchange Online'a temsilci yönetici olarak da bağlanabilirsiniz.

Bu şekilde kimlik doğrulamak için kendi kimlik bilgilerinizi kullanabilirsiniz. Bunu yapmak için -DelegatedOrganization parametresini kullanmanız gerekecektir.

# Replace stonegrovebank.onmicrosoft.com with the organization that you want to manage
Connect-ExchangeOnline -DelegatedOrganization stonegrovebank.onmicrosoft.com

# Optional, you can specify your username as well
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com -DelegatedOrganization stonegrovebank.onmicrosoft.com

Artık tüm posta kutularını ortak kiracıdan yönetebilirsiniz.

Modern Kimlik Doğrulama Olmadan Exchange Online'ı PowerShell'e Bağlama

Hesabınız henüz Modern Kimlik Doğrulamayı desteklemiyorsa PowerShell'de Exchange Online'a bağlanmak için aşağıdaki yöntemi kullanabilirsiniz:

$cred = Get-Credential

Connect-ExchangeOnline -Credential $cred -ShowProgress $true

Exchange Online'ın Bağlı olup olmadığını kontrol edin

Komut dosyalarında Exchange Online modülünü kullanırken bir bağlantının zaten mevcut olup olmadığını kontrol etmek iyi bir fikirdir. Exchange Online'a yalnızca 5 eşzamanlı bağlantınız olabileceğini unutmayın. Ve muhtemelen ihtiyacınız yoksa oturum açmak istemezsiniz.

EXO v3'ten beri Get-ConnectionInformation cmdlet'ini kullanabiliriz. Exchange Online'ın daha eski bir sürümünü kullanıyorsanız Get-PSSession'ı kullanmanız gerekecektir.

Aşağıdaki kod parçasıyla hem V3 hem de eski sürümler için etkin bir ExchangeOnline oturumu olup olmadığını kontrol edebilirsiniz. Öncelikle ExchangeOnline modülünün kurulu olup olmadığını kontrol ediyoruz, ardından 3.x sürümünün kurulu olup olmadığını kontrol ediyoruz. Daha sonra sürüme bağlı olarak mevcut bağlantıları kontrol ediyoruz.

if ($null -ne (Get-Module -ListAvailable -Name ExchangeOnlineManagement)) {
      # Check which version of Exchange Online is installed
      if (Get-Module -ListAvailable -Name ExchangeOnlineManagement | Where-Object {$_.version -like "3.*"} ) {
        # Check if there is a active EXO sessions
        if ((Get-ConnectionInformation).tokenStatus -ne 'Active') {
          write-host 'Connecting to Exchange Online' -ForegroundColor Cyan
          Connect-ExchangeOnline -UserPrincipalName $adminUPN
        }
      }else{
        # Check if there is a active EXO sessions
        $psSessions = Get-PSSession | Select-Object -Property State, Name
        If (((@($psSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
          write-host 'Connecting to Exchange Online' -ForegroundColor Cyan
          Connect-ExchangeOnline -UserPrincipalName $adminUPN
        }
      }
    }

Posta Kutusu bilgilerini alma

Yeni EXO V3 modülüyle artık posta kutusu ayrıntılarını aşağıdaki kısayolla kolayca alabilirsiniz:

# Old way:
Get-ExoMailbox -identity johndoe@lazyadmin.nl

# With the EXO V2 module you can write the following shorthand
Get-ExoMailbox johndoe

Oturumlarınızın Bağlantısını Kesme

PowerShell pencerenizi kapatmadan önce her zaman Exchange Online oturumunuzun bağlantısını kestiğinizden emin olun. Oturumu kapatmazsanız Exchange Online'a yönelik 5 uzak PowerShell bağlantısının tamamını kullanmak durumunda kalabilirsiniz. Böyle bir durumda yeniden bağlanabilmeniz için oturumların süresinin dolmasını beklemeniz gerekecektir.

Disconnect-ExchangeOnline

Sıkça Sorulan Sorular

hatası alırsanız, bu sistemde komut dosyalarının çalıştırılması devre dışı olduğundan dosyalar yüklenemiyor. Dosyaları imzalamak için geçerli bir sertifika sağlayın." o zaman yürütme politikasını ayarlamayı unuttunuz.

Yükseltilmiş bir PowerShell Penceresinde aşağıdaki cmd'yi çalıştırın:
Set-ExecutionPolicy RemoteSigned

Temel kimlik doğrulama seçeneğini kullanırken MFA özellikli bir hesapla Exchange Online'a bağlanmaya çalışıyorsunuz.

Makalenin başında açıklandığı gibi en son Exchange Online Modülü EXO V3'ü yüklediğinizden emin olun. .

Exchange Online'a yönelik mevcut 5 bağlantının tümünü kullandınız. PowerShell oturumlarınızın bağlantısını kestiğinizden emin olun.

Geçerli oturumları kapatmak için aşağıdaki cmd'yi çalıştırabilirsiniz:

Get-PSSession | PSSession'ı Kaldır

Exchange Online'a bağlanmak için Office 365'te genel yönetici olan bir hesap kullanmanız gerekir. Bağlandığınız hesap doğru izinlere sahip değil.

Kapanıyor

Yeni Exchange Online modülü gerçekten güçlüdür ve Exchange Online ile çalışmayı çok daha kolay hale getirir. Umarım bu makale başlamanıza yardımcı olmuştur. Herhangi bir sorunuz varsa aşağıya bir yorum bırakmanız yeterli.

Aşağıdaki makaleleri de beğenebilirsiniz:

  • Office 365 Plus Adreslemeyi Etkinleştir
  • PowerShell ile tüm e-posta adreslerini bulun
  • PowerShell'i Office 365'e bağlama

İlgili makaleler