Citrix Virtual Apps and Desktops'ta PowerShell'e Giriş


Konu karmaşık BT altyapılarının yönetilmesi olduğunda CITRIX ve PowerShell öne çıkan isimlerdir. BT profesyonellerinin faaliyet kapsamını genişletmek için birbirlerini mükemmel bir şekilde tamamlamaları şaşırtıcı değildir.

Örneğin, Citrix Virtual Apps and Desktops'ı yönetirken PowerShell, Citrix Studio'daki belirli özelliklerin aynı anda birden fazla hedefe daha doğru şekilde uygulanmasına olanak tanır.

PowerShell'in CVDA yönetiminde zamandan ve emekten nasıl tasarruf edebileceğinize dair daha fazla örnek için makaleye bakın.

CVAD Yönetimi için neden PowerShell kullanılmalı?

Citrix ortamınızı yönetmenize yardımcı olması için PowerShell'i kullanmayı düşünmenizin birkaç nedeni vardır.

Benim için, gerekli Citrix cmdlet'lerinin mevcut olduğu (daha sonra göreceğim) bir PowerShell istemi açık olacak; burada ortamın durumunu tek bir komutla hızlı bir şekilde görebiliyorum ve daha önce çalıştırdığımda onu hızlı bir şekilde bulabiliyorum. kalıcı PowerShell geçmişime (ctrl+r aracılığıyla) sayesinde hangi parametreleri kullanacağımı hatırlamama veya başka bir şey yazmama bile gerek kalmıyor.

Bu, aşırı yüklenmiş sunucuları, sıfırlanmamış (ve sıfırlanmamış) bağlantısı kesilmiş oturumları, beklenmedik bir şekilde bakım modundaki veya kayıtsız sunucuları vb. aramayı içerebilir.

Diğer bir neden ise otomasyondur. Örneğin, bir CVAD sunucusundaki yerel olay günlüğündeki belirli bir olayın, yazdırma biriktiricisinin yeniden başlatılana ve yazdırmaya çalışan herhangi bir uygulamanın askıda kalana kadar kurtarılamayan bir durumda olduğu anlamına geldiği bir müşteri sorunu yaşadım.

Kısa vadeli bir hafifletme olarak, bu olayı kontrol etmek için zamanlanmış bir görev olarak düzenli olarak çalışan bir komut dosyası yazdım ve bu olay gerçekleşmiş olsaydı, yeni oturum açmaları önlemek için sunucuyu bakım moduna geçirecek ve kullanıcılara oturum açmak isteyebileceklerini bildiren bir mesaj yazacaktım. oturumu kapatıp tekrar açın, böylece etkilenmeyen bir sunucuya giderler.

Komut dosyasının sonraki çalıştırmalarında, sunucularda sorun yaşayan kullanıcıları kontrol edecek ve eğer sorun yoksa bakım modundan çıkarıp yeniden başlatacak.

Önkoşullar

İlk karar, aynı makinede bir arada bulunamayan farklı PowerShell modülleri gerektirdiğinden şirket içi mi yoksa bulut altyapısını mı yönetmeniz gerektiğidir, ancak neyse ki komutların çoğu ikisi arasında aynıdır, bu nedenle birini öğrendikten sonra, diğerini kullanmak için geçiş yapmak çok kolaydır.

Şirket içi için gerekli PowerShell cmdlet'leri Citrix Studio yüklendiğinde yüklenir, ancak Teslimat Denetleyicileri üzerinde herhangi bir yönetim konsolunun veya aracın çalıştırılması önerilmez çünkü bu, daha sonra birincil rolü için kullanılamayan kaynakları tüketir.

Bu nedenle, şirket içi için gerekli PowerShell cmdlet'lerini yüklemenin en kolay yolu, tüm konsolların yüklü olduğu yönetim sunucusu gibi başka bir makineye CVAD ISO'dan Citrix Studio'yu yüklemektir.

Alternatif olarak, Studio'yu yüklemek istemiyorsanız CVAD ISO'yu bağlayın ve eklenen ISO'nun X64Citrix Desktop Delivery Controller klasöründen yükseltilmiş bir PowerShell isteminde aşağıdakileri çalıştırın:

PowerShell in CVAD-1:

gci -Name *powershell*.msi | %{ $_ ; start msiexec "/i ""$_"" /qn /norestart"  -wait }

Citrix Cloud için gereken PowerShell cmdlet'leri Citrix Virtual Apps and Desktops Remote PowerShell SDK'sında mevcuttur.

Web sayfası ayrıca gerekli olan ek kimlik doğrulamaya ilişkin bilgileri de içerir. Şirket içi PowerShell bileşenlerinin yüklü olduğu bir makineye yüklenmemeleri gerekir.

PowerShell cmdlet'lerinin sürümünü, Studio'da yaptığınız gibi, yüklediğiniz (minimum) CVAD sürümüyle eşleştirmek iyi bir fikirdir.

Kullanacağınız Windows PowerShell sürümü size bağlıdır, çünkü 2.0 ile 5.1 arasındaki herhangi bir sürüm işe yarayacaktır, ancak en fazla cmdlet'i ve dolayısıyla yetenekleri sağladığı için 5.1'i kullanıma sunmanızı öneririm.

Hazırlık

CVAD cmdlet'lerini kullanmak için içinde bulundukları PowerShell modüllerini yüklememiz gerekiyor, ancak son sürümlere kadar Citrix bu cmdlet'leri modüller yerine PowerShell ek bileşenlerine yerleştiriyordu, bu da onları biraz farklı bir şekilde yüklediğimiz anlamına geliyor.

Tüm Citrix cmdlet'lerini ek bileşenden yüklemek için şunu çalıştırabiliriz:

PowerShell in CVAD-2:

Add-PSSnapin -Name Citrix*

Bununla birlikte, mevcut tüm cmdlet'leri yüklediği için bu işlemin tamamlanması oldukça zaman alabilir, ancak yalnızca tek bir ek parçaya ihtiyacınız olabilir. Örneğin, CVAD makinelerini almak için Get-BrokerMachine ve ilgili cmdlet'leri kullanıyorsanız bunun yerine şunu çalıştırabilirsiniz; bu çok daha hızlıdır:

PowerShell in CVAD-3:

Add-PSSnapin -Name Citrix.Broker.Admin.*

Belirli bir cmdlet'in hangi ek bileşende olduğunu bulmak için, bu bölümde ilk olarak gösterildiği gibi tüm Citrix ek bileşenlerini yükleyin ve ardından cmdlet'i Get-Command'e bağımsız değişken olarak belirtin; bunun üzerine size ek bileşenin adını söyleyecektir bunun yerine yükleyebileceğiniz onu içerir.

1912 LTSR'den sonraki CVAD sürümleriyle, modüllerden cmdlet'leri Add-PSSnapin (takma ad) yerine Import-Module (diğer ad ipmo) aracılığıyla yükleyebiliriz. asnp) ancak yukarıdakiyle aynı şey geçerlidir; tüm Citrix modüllerini Import-Module'e “Citrix*” belirterek veya yalnızca gereken belirli modülleri yine yükleyerek yükleyebiliriz. tüm Citrix modüllerini inceliyoruz ve ardından cmdlet'lerde Get-Command'i kullanarak bunların hangi modül(ler)de bulunduğunu görmemiz gerekiyor.

Betiklerimi hem daha yeni hem de daha eski CVAD sürümleriyle uyumlu hale getirmek için genellikle aşağıda gösterilen koda benzer bir şey kullanırım; bu kod öncelikle gerekli Citrix modülünü yüklemeye çalışır ve bu başarısız olursa eşdeğer ek bileşeni yüklemeyi deneyecektir:

PowerShell in CVAD-4:

## new CVAD have modules so use these in preference to snapins which are there for backward compatibility
if(!(Import-Module -Name Citrix.DelegateAdmin.Commands -ErrorAction SilentlyContinue -PassThru -Verbose:$false) -and! (Add-PSSnapin -Name Citrix.Broker.Admin.* -ErrorAction SilentlyContinue -PassThru -Verbose:$false))
{Throw 'Failed to load Citrix PowerShell cmdlets - is this a Delivery Controller or have Studio or the PowerShell SDK installed?'
}

Bilgi Alma

İhtiyacımız olan cmdlet'leri kurup yükledikten sonra başlamaya hazırız. Bilgi almak için çoğunlukla kullandığım komutlar Get-Broker ile başlar, örneğin Get-BrokerMachine, GetBrokerDesktopGroup (dağıtım grupları için), Get-BrokerCatalog ve Get-BrokerSession. Bilgi almaya yönelik tüm Citrix cmdlet'lerini görmek için aşağıdakileri çalıştırabilirsiniz:

PowerShell in CVAD-5:

Get-Command -Module Citrix* -Verb Get

Ek bileşenler veya modüller kullanıyor olsanız da, bu işe yarayacaktır. Belirli bir komutun yardımını görmek için şunun gibi bir şey çalıştırın:

PowerShell in CVAD-6:

Get-Help -Name Get-BrokerMachine -ShowWindow

Ayrıca harici internet erişiminiz olduğunu varsayarak, yardımla bir tarayıcı penceresi açmak için -ShowWindow ifadesini -Online ile değiştirebilirsiniz.

Ancak, cmdlet'lere aktarılan argümanlar genellikle aynı olduğundan nadiren RTFM kullanmam gerekir ve bunlar arasında gezinebilir veya cmdlet adından sonra bir eksi/tire işareti yazdıktan sonra ctrl+boşluk tuşlarına basarak tüm mümkün olanları listeleyebilirsiniz. İmleç tuşlarıyla hareket edebileceğiniz argümanlar.

Şimdi Get-BrokerMachine 'yi çalıştırarak CVAD'de hangi makinelere sahip olduğumuzu görelim (şekil 1):

Şek. 1: Get-BrokerMachine çalıştırmanın PowerShell çıktısı

Peki işler pek iyi gitmedi, değil mi? Bunu bir Dağıtım Denetleyicisi üzerinde çalıştırırsanız, ki bu tavsiye edilmez, aslında işe yarar ve makineleri listeler.

Bununla birlikte, bunu önkoşulları karşılayan ancak Teslimat Denetleyicisi olmayan bir VM üzerinde çalıştırdım, bu nedenle isteğin hangi makineye (Teslimat Denetleyicisi) gönderileceğini bilmiyor, bu nedenle varsayılan olarak yerel ana bilgisayarı sorgulamak için başarısız oluyor çünkü yerel ana bilgisayar değil. Teslimat Denetleyicisi (veya Citrix Cloud kullanıyorsanız Bulut Bağlayıcısı).

Cmdlet'lere hangi Teslimat Denetleyicisine bağlanacağımızı söylemek için (bu, aynı makineden farklı gruplara/örneklere bağlanabileceğimiz anlamına gelir ki bu da Studio için yanıltıcıdır), -AdminAddress bağımsız değişkenini kullanırız (bkz. şekil 2) :

Şek. 2: Get-BrokerMachine'ı -AdminAddress bağımsız değişkeniyle çalıştırmanın PowerShell çıktısı

Ancak bu, anlaşılması zor olan çok uzun bir liste verebilir, dolayısıyla bu uzun listeye bakarak sadece ilgilendiğimiz özellikleri alabiliriz (bkz. şekil 3; ayrıca 'e iletilen özellikleri tamamlayarak sekme de yapabilirsiniz). Select-Object (takma ad select)) veya benim tercihim, daha fazla sıralama ve filtreleme yapabileceğiniz ekran üstü ızgara görünümü sağlayan Out-GridView'e yönlendirmek. veriler (şekil 4).

Şek. 3: Çıktıyı Get-BrokerMachine'den Select-Object'e aktararak belirli özellikleri görüntüleyebilirsiniz.

Şek. 4: Çıktının Get-BrokerMachine'den Out-Gridview'e aktarılması, verilere ilişkin net bir genel bakış sağlar

Şeyleri Değiştirmek

Tamam, Studio'da görebildiklerimizin çoğunu yalnızca birkaç Get-Broker* cmdlet'iyle nasıl sorgulayacağımızı biliyoruz, peki ya bir şeyi değiştirmek istersek? Örneğin, bazı makineleri bakım moduna geçirmek istersek, bunu bir model de dahil olmak üzere adları aracılığıyla, Get-BrokerMachine'den (filtrelenmiş) sonuçları aktararak veya bir veya daha fazla makineyi geçerek yapabiliriz. daha önce bir dizide depolanan Get-BrokerMachine'den Set-BrokerMachine'in -InputObject bağımsız değişkenine döndürüldü.

Şek. 5: CVAD'deki makinelerin PowerShell aracılığıyla yapılandırılması

Lütfen neyi başarmak istediğinizi ve betiğin gerçekte ne yapacağını bildiğinizden emin olun; örneğin her makineyi bakım moduna geçirmenin çok kolay olacağını görebilirsiniz; bu, kullanıcılarınız için saat 09.00'da harika bir haber olmayabilir. bir pazartesi sabahı.

İstenmeyen eylemleri gerçekleştirebilecek komut dosyaları yazarken genellikle PowerShell'in yerleşik doğrulama mekanizmasını kullanırım; burada, bu makaleye göre, bazı şeyleri değiştiren komutları bir $PSCmdlet.ShouldProcess bloğuna sarırım.

Bu komut dosyaları, -Confirm:$false belirtilerek kullanıcı müdahalesi olmadan çalıştırılabilir.
Bir oturumda -AdminAddress'i bir kez kullandığımızda artık bunu yapmadığımıza dikkat edin. artık belirtmeniz gerekiyor.

Citrix Studio'da PowerShell

Umarız bu makalede CVAD'de PowerShell'i kullanmaya başlamanız için yeterli bilgi vardır - her türlü görev için çok sayıda komut dosyası örneği vardır, ancak bunları yanlışlıkla veya kasıtlı olarak zarar vermemeleri için üretim ortamında çalıştırmadan önce her zaman kontrol edin. Yalıtılmış bir test ortamının paha biçilmez olabileceği yer burasıdır.

Bazen Studio'da gerçekleştirebileceğiniz belirli bir görevi nasıl gerçekleştireceğiniz açık olmayabilir. Böyle bir durumda eylemi Studio'da yürütün ve ardından kullanılan PowerShell cmdlet'ini ve kullanılan bağımsız değişkenleri görmek için PowerShell sekmesine gidin.

Şek. Şekil 6: Citrix Studio'daki PowerShell sekmesi, bir eylemi yürütmek için kullanılan PowerShell cmdlet'ini gösterir

Yukarıda, gerekli olmadıkları için -BearerToken ve -LoggingId değerlerini yok sayabiliriz. Makinenin ekleneceği kataloğun UID'sini almak için istediğimiz katalog için Get-BrokerCatalog'u çağırıyoruz:

Şek. Şekil 7: Bir kataloğun UID'sini almak için basitleştirilmiş PowerShell komutu

Çözüm

Umarım bu makale size CVAD ile günlük çalışmalarınızı basitleştirmenize yardımcı olabilecek bazı yaklaşım ve fikirleri tanıtmıştır.

CITRIX ve PowerShell'in etkileşimi hakkında daha fazla bilgi edinmek istiyorsanız PowerShell'in CITRIX Machine Creation Services (MCS) ile kullanımına odaklanacak bir sonraki makaleyi sabırsızlıkla bekleyebilirsiniz.

Ücretsiz PowerShell Komut Dosyası Koleksiyonu

İlgili makaleler