Microsoft Teams Yönetim Merkezi'nden Cloud Shell Nasıl Kullanılır


Ancak Daha İyi Bir Seçim Sade Eski PowerShell'dir

Mesaj merkezi bildirimi MC289245'te (4 Ekim 2021, Microsoft 365 yol haritası öğesi 82708) duyurulduğu üzere, Teams yönetim merkezinden bir Azure Cloud Shell oturumu başlatma özelliği artık kiracılarda mevcuttur. Görünüşe göre amaç, Teams yöneticilerinin, iş istasyonuna herhangi bir şey yüklemeye gerek kalmadan Microsoft Teams PowerShell modülündeki cmdlet'leri kullanarak görevleri gerçekleştirmelerine olanak sağlamak. Aşağıda tartışıldığı gibi Cloud Shell, Teams cmdlet'lerini kesinlikle çalıştırabilir ancak uygulamanın getirdiği sınırlamalar öyledir ki, kesinlikle mecbur kalmadığınız sürece bu yaklaşımın kullanılmasını önermem.

Cloud Shell'i Çalıştırma

Yeni bir Cloud Shell oturumu başlatmak için tarayıcı çubuğundaki kabuk simgesini tıklayın. Yönetim merkezinin altında bir bölme açılır, Azure'a bağlanır ve bir bulut sürücüsü oluşturulur. Azure, perde arkasında Hyper-V ana bilgisayarındaki bir Linux sanal makinesinde çalışan yeni bir PowerShell Core örneği oluşturur. Vasil Michev'in üç yıl önce Cloud Shell'i araştırmasından bu yana pek çok açıdan işler pek ilerlemedi.

Bir kabuk oturumuna bağlandıktan sonra Teams'e bağlanmak ve modülden cmdlet'leri yüklemek için Connect-MicrosoftTeams cmdlet'ini çalıştırabilirsiniz. Modülü yükledikten sonra cmdlet'lerini çalıştırabilirsiniz (Şekil 1).

Yalnızca Teams Yönetim Merkezi Değil

Microsoft 365 yönetim merkezinden bir Cloud Shell oturumu başlatırsanız aynı işlevsellik kullanılabilir. Başka bir deyişle, Cloud Shell'i Teams yönetim merkezinden başlatabileceğiniz haberi değil. Aksine, Cloud Shell oturumunu nereden oluşturursanız oluşturun, Teams cmdlet'lerini Cloud Shell'de kullanılabilir hale getirmek için mühendisliği Microsoft yapmıştır. Teams cmdlet'lerini Cloud Shell'de Microsoft 365 yönetim merkezinden, Azure portalından, Teams yönetim merkezinden ve iOS için Azure mobil uygulamasından çalıştırabildim (ikincisini tavsiye etmem).

Azure Aboneliği Gerekli

Teams yönetim merkezinden Cloud Shell'e bağlanabilmeniz için Azure aboneliğine bağlı bir hesapla oturum açmanız gerekir. Bunun nedeni, Cloud Shell oturumlarının Linux sanal makinesi için Azure depolamayı kullanması ve geçici verileri tutmak ve yüklenen komut dosyalarını depolamak için olmasıdır. Abonelik, Azure depolama alanının kullanımını kapsar.

Hem abonelik yönetimi hem de Teams yönetimi için aynı hesabı kullanıyorsanız, küçük bir kiracıda oldukça mümkün olan bir aboneliğe sahip olmak için bir hesaba ihtiyaç duyulması sorun değildir. Daha büyük kiracılarda, bir abonelik için uygun bir Azure rolünü, söz konusu aboneliğe ilişkin yönetim eylemleri gerçekleştirmesini istediğiniz tüm hesaplara atamanız gerekir.

Genellikle Azure koordinatörü rolünü kiracı yönetimi için kullanılan hesaplara atarım çünkü bu, aboneliğe bağlı kaynakları (depolama gibi) kullanmak için yeterlidir. Farklı bir Azure rolünün (Ortak Yönetici gibi) koşullarınıza daha uygun olduğunu görebilirsiniz. Şekil 2, Azure yönetim merkezindeki bir abonelik için Katkıda Bulunan rolüne sahip hesapları göstermektedir.

Teams'e bağlanma

Azure gereksinimlerini karşıladıktan sonra Teams’e bağlanabiliyoruz. Microsoft'un Teams PowerShell belgelerinde Connect-MicrosoftTeams cmdlet'ini herhangi bir parametre olmadan çalıştırabileceğiniz belirtiliyor. İşte olanlar:

PS /home/global> Connect-MicrosoftTeams
WARNING: Interactive authentication is not supported in this session. Using parameter '-Identity' instead.

Account   Environment Tenant                               TenantId
-------   ----------- ------                               --------
MSI@50342 AzureCloud  a562313f-14fc-43a2-9a7a-d2e27f4f3478 a562313f-14fc-43a2-9a7a-d2e27f4f3478

Kullanılan hesabın Teams yönetim merkezinde oturum açmış hesap yerine MSI@50342 olduğunu unutmayın. Bu, Cloud Shell'in kimlik doğrulamasını Teams yönetim merkezi gibi bir konsoldan devraldığında kullandığı bir sahte hesap biçimidir. Ancak Skype Kurumsal Çevrimiçi Bağlayıcı'dan (Şubat 2021'de kullanımdan kaldırıldı) gelen ve artık Teams modülüne dahil edilen cmdlet'ler farklı bir uç nokta ve kimlik doğrulama mekanizması kullanıyor. Bunun net etkisi şu: Bu cmdlet'leri çalıştırmayı denerseniz 404 hatası alırsınız:

PS /home/global> Get-CsTeamsMeetingPolicy
Get-CsTeamsMeetingPolicy: The remote server returned an error: (404) Not Found.
PS /home/global> Get-CsTeamsMessagingPolicy
Get-CsTeamsMessagingPolicy: The remote server returned an error: (404) Not Found.

Çok faktörlü kimlik doğrulama kullanılmadığı sürece, belirli bir hesap için kimlik bilgileriyle Teams'te oturum açarsanız her şey çalışır. Çok faktörlü kimlik doğrulamanın sorunu, Cloud Shell'in bir terminal penceresinde çalışması ve dolayısıyla etkileşimli oturum açma iletişim kutusunu görüntülemenin bir yolu olmamasıdır. Bir hesapta oturum açmak için temel kimlik doğrulamayı kullanabilirsiniz ve bağlandığınızda hem yeni hem de eski (Skype) cmdlet'ler mükemmel şekilde çalışır. Kiracıların tüm yönetici hesaplarını çok faktörlü kimlik doğrulamayla güvence altına alması gerekir, bu nedenle bu yaklaşımı önermiyorum.

PS /home/global> $O365Cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Admin@office365itpros.com
Password for user Admin@office365itpros.com: ************

PS /home/global> connect-microsoftteams -Credential $O365Cred

Account                             Environment Tenant                               TenantId
-------                             ----------- ------                               --------
Admin@office365itpros.com           AzureCloud  as62313f-14fc-43a2-9a7a-d2e27f4f3478 as62313f-14fc-43a2-9a7a-d2e27f4f3478

PS /home/global> Get-CsTeamsFeedbackPolicy

Identity                  : Global
UserInitiatedMode         : Enabled
ReceiveSurveysMode        : EnabledUserOverride
AllowScreenshotCollection : False
AllowEmailCollection      : False
AllowLogCollection        : False

Çözüm ve önerilen yaklaşım, Teams'de oturum açmak için cihaz kimlik doğrulamasını kullanmaktır. Bu yöntem, bir web sayfasına girilecek benzersiz bir tanımlayıcı oluşturur.

PS /home/global> Connect-MicrosoftTeams -UseDeviceAuthentication

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code C5BQJLUJ8 to authenticate.

Kodu girdikten sonra hangi hesapta oturum açacağınız sorulur ve ardından MS Teams PowerShell Cmdlet'leri adlı Microsoft Graph uygulamasını kullanmak istediğinizi onaylamanız istenir (Şekil 3).

Microsoft Graph uygulamalarının cihaz kimlik doğrulamasını nasıl kullandığı hakkında daha fazla bilgi için Lee Ford'un bu blogunu okuyun.

PowerShell'i Cloud Shell'de Çalıştırma

Uygun bir hesap kullanarak bağlandıktan sonra, Microsoft Teams PowerShell modülünün en son sürümünde (bu yazının yazıldığı sırada 2.6.0) bulunan cmdlet'lerden herhangi birini çalıştırabilirsiniz. Ayrıca komut dosyalarını bir iş istasyonundan Azure'a yükleyerek bunların Cloud Shell'de çalışmasına izin verebilirsiniz. Şekil 4, Get-CsOnlineUser ile Teams kullanıcılarının görünen adını bildirmek için basit bir komut dosyası çalıştırmanın sonucunu gösterir.

Cloud Shell'de çalıştırılmak üzere yüklenen komut dosyaları, bunları Teams cmdlet'leri ve ForEach-Object, Select-Object ve Where gibi temel PowerShell komutlarıyla sınırlandırırsanız sorunsuz çalışır. -Nesne. Ancak komut adlarını tam olarak yazmazsanız sorunlarla karşılaşabilirsiniz. Örneğin, aşağıdaki gibi komutlarda Sort-Object yerine Sort kullanmak yaygındır:

Get-Team | Sort DisplayName

Komutu çalıştırırsanız Cloud Shell itiraz eder:

Get-Team | Sort DisplayName
/usr/bin/sort: cannot read: displayname: No such file or directory

Bu tür bir aksaklık, Cloud Shell'in normalde yaptığınız gibi PowerShell'i çalıştırmakla aynı şey olmadığının altını çiziyor. Kendine has tuhaflıkları ve gereksinimleri olan ayrı bir ortamdır ve bunu üretimde kullanmayı düşünüyorsanız Cloud Shell'i göz önünde bulundurarak kod yazmanız gerekir.

Temel sözdiziminin doğru olduğundan emin olmanın yanı sıra, diğer modüllerdeki cmdlet'leri kullanmanız gerektiğinde işler daha da karmaşık hale gelir. Ekipler, Microsoft 365 ekosisteminden alınan birden fazla bileşene dayanır ve yönetim yaşamının acı gerçeği, yöneticilerin işlerini yapabilmeleri için genellikle SharePoint Online veya PowerShell için Microsoft Graph SDK gibi diğer modüllerdeki cmdlet'leri kullanmaları gerektiğidir.

Örneğin Azure AD'nin Cloud Shell'de çalışmasını ne Teams yönetim merkezinden ne de Microsoft 365 yönetim merkezinden sağlayamadım. GitHub'daki bir notta, kullanıcıların kimlik bilgilerini yeniden girme ihtiyacını ortadan kaldırmak için Cloud Shell'in varsayılan Connect-AzureAD işlevini geçersiz kılan özel bir işleve sahip olduğu açıklanmaktadır. Belki de sorunun kaynağı burasıdır.

Olumlu tarafı, Remote PowerShell'i kullanarak Exchange Online PowerShell'e bağlanabilirsiniz (bu, Get-ExoMailbox gibi REST cmdlet'lerinden hiçbirinin mevcut olmadığı anlamına gelir). Bu, Microsoft 365 yönetim merkezinden (Şekil 5) veya Teams yönetim merkezinden çağrıldığında Cloud Shell için işe yarar.

Genel olarak, komut dosyaları tarafından kullanılan veya etkileşimli görevleri gerçekleştirmek için kullanılan tüm modüllerin olduğundan emin olma ihtiyacı, Cloud Shell için sınırlayıcı bir faktördür.

Grafik Erişimi

Cloud Shell, Invoke-RestMethod veya Invoke-WebRequest cmdlet'lerini kullanan Graph API çağrılarını destekler; dolayısıyla bu, modüllerin aynı şekilde çalışmadığı durumlarda verilere erişmek ve verileri işlemek için de geçerli bir yöntemdir. beklenen. Şekil 6, terminal penceresindeki komut dosyasının sonuçlarıyla birlikte Graph API çağrısı kullanan bir komut dosyasını değiştirmek için Cloud Shell'deki düzenleyicinin kullanımını gösterir.

Konfor İçin Çok Fazla Sınırlama

Şüphesiz bazıları Cloud Shell'den memnun kalacak ve onu çok verimli bir şekilde kullanacak. Ancak Cloud Shell benim için çalışmıyor. Standart PowerShell oturumları ile Visual Studio Code (geliştirme için) arasında tamamen kabul edilebilir bir ortama sahip olduğumda, hepsinin işe yarayacağını umarak modüllerle uğraşmak etkili bir çalışma yolu gibi görünmüyor. Her şey çalışıyor. Tüm modüller yüklenir. Komutlar çalıştırılır. Kas hafızası, kurulumun işleyişindeki mevcut kusurların üstesinden gelir. Cloud Shell'i çok fazla kullanacağımdan şüpheliyim. Ancak bu, denememeniz ve kendi kararınızı vermemeniz için bir neden değil.

İlgili makaleler