Microsoft Configuration Manager HTA Dosyası ile İşletim Sistemi Dağıtımı
System Center Configuration Manager ürünümüz ile ilgili olarak neler yapabildiğimiz ve ürünümüzün yeteneklerini daha önce yazmış olduğumuz makalelerden biliyoruz. Bu makalemizde ise bildiğimiz gibi bizler Configuration Manager ürünümüz ile işletim sistemi dağıtımlarını gerçekleştirebiliyoruz. Bu dağıtım metotlarına baktığımızda da zero touch ya da lite touch gibi iki adet yöntemimiz bulunuyor. Basit tabiriyle anlatacak olarak burada yer dağıtım metotlarına Zero Touch dağıtım dediğimizde herhangi bir kullanıcı müdahalesi olmadan işletim sistemi dağıtımımızın tamamlanması olarak değerlendirirken Lite Touch dağıtım metodunda ise küçük dokunuşlar diyeceğimiz dağıtım modeli olarak değerlendirebiliriz.
Lite Touch dağıtım modelinde ise bizler istemcilerimizin kurulumu sırasında isimlendirme yapmak isteyebiliriz. Bununla birlikte Configuration Manager üzerinde işletim sistemi dağıtımı için mevcut senaryolarımıza göre birden fazla görev dizisi oluşturmak yerine tek bir görev dizisi içerisinde bütün senaryolarımızı uygulayarak gerçekleştirebileceğimiz durumlarımız olabilir. Açıkçası burada mevcut durumumuza göre ortaya çıkacak her türlü senaryoya uygun görev dizilerimizi oluşturabileceğimizi biliyoruz.
Bu makale öncesinde hazırlamış olduğum Configuration Manager ile BIOS parolalarının yönetilmesi de buna bir örnek olarak verebilir.
Microsoft Configuration Manager ile bildiğimiz gibi görev dizileri yer almakta ve bu görev dizilerine göre kurulum adımlarımız ilerlemekte. Burada yer alan her bir görev dizisinin aslında uygulamak istediğimiz adımları tanımlarken bazı durumlarda koşulları kullanıyor ve bu koşullara göre adımlarımızı tanımlıyoruz. Peki statik olarak yer alan bu değişkenler ki bu değişkenlerin adına da task squence variable olarak biliyoruz. İşte bu makalemizde burada bahsetmiş olduğumuz değişkenleri bizler dışarıdan kendimiz yani custom değişkenler oluşturacak ve oluşturmuş olduğumuz bu değişkenleri de görev dizilerimiz içerisinde nasıl kullanabileceğimizi göreceğiz.
Custom Variable olarak kullanacağımız bu değişkenleri ise görev dizimiz başladığında kurulumu yapacak olanların karşısına bir HTA dosyamız vasıtası ile alacağız. Sadece HTA dosyası ile mi bu çalışmaları gerçekleştirebiliriz? Tabii ki hayır burada Powershell ile de kullanıcılarımızdan veri alabilir ve almış olduğumuz bu çıktıları yine görev dizilerimiz içerisinde kullanabilirdik.
O halde öncelikle mevcut senaryomuzu ortaya koyarak ilerleyelim. Bizler kurulum esnasında kullanıcımızdan istemci için bir isim bilgisini alacağız. Bunu özellikle seçtim çünkü kurulum yapan birçok arkadaş bileceklerdir ki zaten biz bunu yaparken görev dizisi içerisinde OSDComputerName değişkeni ile bunu sağlıyoruz diyeceklerdir. Fakat kullanıcıdan bir giriş alarak ilerlemek kısmını açıklayabilmek için bu değişkeni seçtim.
İkinci olayımız ise bir önceki adımda yer alan değişkenden farklı olması için kurulum yapacağımız ortam yeni bir kurulum mu olacak yoksa bir yükseltme mi (Upgrade) olacak. Burada oluşturacağımız değişkenimiz ise tamamen custom bir değişken olup yine buradan almış olduğumuz veriye göre görev dizimizi ilerleteceğiz.
Senaryomuzu da oluşturduktan sonra artık adımlarımıza geçebiliriz. Öncelikle yapacağımız ilk çalışmada System Center Configuration Manager üzerinde yer alan ve bizlerin kurulumları başlattığımız WinPe yani Boot imajımız üzerinde HTA dosyasının kullanılacağını tanımlayarak başlayacağız. Buradan da anlayacağımız gibi varsayılan ayarlarda WinPE imajımız bu komponenti tanımıyor ve bizler bunun kullanılacağını tanımlayacağız. Burada mevcut tanımlamaları farklı yollarla da elbette yapabilirdik fakat bu makalemizin konusu olmadığı için SCCM konsolumuz üzerinde bu çalışmayı ilerleteceğiz.
SCCM konsolumuz üzerinde Software Library başlığı altına geçiyoruz.
Software Library başlığı altında yer alan Operating System ardında da Boot Image seçimini gerçekleştiriyoruz. Karşımıza gelen Boot image içerisinde bizlerin kullanmış olduğu Boot Image üzerinde sağ klik yaparak properties seçimini gerçekleştiriyoruz.
Gelen ekranımız üzerinde Optional Component ve ardından makalemizin başında da belirttiğimiz gibi HTA dosyasını ekleyerek onaylıyoruz.
Böylelikle HTA dosyalarımızı kullanabilmek için ilk konfigürasyonumuzu da tamamlamış oluyoruz.
Artık HTA dosyamızı oluşturacağız. HTA dosyamız içerisinde Visual Basic kullanarak devam edeceğiz. Burada Microsoft Configuration Manager için kullanacağımız komponentleri anlamak gerekiyor. Bunun için aşağıda yer alan Microsoft sayfası üzerinden detaylarına ulaşabilir ve faydalanabilirsiniz.
Makalemizin başlangıcında da belirttiğim gibi burada VBS kullandık fakat Powershell de kullanabilirdik.
Görev dizimiz için kullanacağımız HTA dosyamızın ekran görüntüsünü aşağıda görebilirsiniz.
Senaryomuza uygun olarak hazırlamış olduğum HTA dosyası bizlerin Microsoft Configuration görev dizisi başladığında ilk olarak açılacak ve bizler Bilgisayar Adi ve Kurulum tipini belirleyerek ilerleteceğiz. Amacımız bilgisayar isimlendirmesi için OSDComputerName değişkenini kullanırken, kurulum tipinde ise custom bir değişken kullanarak görev dizimize atamasını gerçekleştireceğiz. HTA dosyası içeriğinde bizler için önemli olan en önemli nokta ise önceki adımda da referans dokümanı incelediğinizde de göreceğiniz üzere öncelikle Configuration Manager için görev dizisi değişkeni oluşturabilmek ve görev dizimizde kullanabilmek için CreateObject(“Microsoft.SMS.TSEnvironment”) isimli objeyi oluşturmakla başlıyoruz.
Set ProgressUI = CreateObject(“Microsoft.SMS.TsProgressUI”)
CreateObject(“Microsoft.SMS.TSEnvironment”)
Oluşturmuş olduğumuz HTA dosyası görev dizisi başladığında bizleri karşılayacağını ve bizlerin seçimleri ile yukarıda oluşturmuş olduğumuz obje sayesinde değişken olarak kullanacağımızı söylemiştik. Çalışmalarımda açılan ve bizleri karşılayan HTA file aynı zamanda Configuration Manager task barı ile gelmekte. Dolayısıyla ekran üzerinde birbiri üzerine bindiği için seçim yaparken zorlanıyoruz. Bu sebeple yukarıda yer alan ve obje oluşturmak için kullandığımız kod satırımız sonrasına ProgressUI.CloseProgressDialog kod satırını ekledim. Böylelikle HTA doyasımız açıldığında öncelikle görev dizisi için oluşturduğumuz COM objesi ardında da Microsoft Configuration Manager task bari kapatmış olacağız. Bu adımı eklediğimizde sadece HTA dosyası bizim önümüzde kalmış olacak.
Bu adımlar sonrasında artık bizler görev dizisi içerisinde kullanacağımız değişkenleri oluşturacağız.
Dim env
Set env = CreateObject(“Microsoft.SMS.TSEnvironment”)
env(“OSDComputerName”) = ComputerName.Value
env(“OsSetupType”) = KurulumTipi.Value
Yukarıda bulunan kod satırları bizlerin öncelikle OSDComputerName değişkenini oluşturacak ve bu değişkene HTA dosyamız üzerinde yer alan bilgisayar ismi alanına (textbox) üzerinden veriyi alarak atayacağız.
OsSetupType değişkeni ise custom oluşturduğumuz bir değişken olup açılır menü (combobox) üzerinde seçeceğimiz değişkeni alacaktır. Satırlar içerisinde yer alan açıklamaları örnek olması için ekledim. Sizler dilerseniz burada değişiklikleri kendinize göre yapabilir ve kullanabilirsiniz.
Bilgisayar Adını almak için;
<Input type=”text” id=”ComputerName” name=’ComputerName’> Turkce karakter Kullanmayiniz!
İşletim Sistemi Kurulumu değişkeni için;
<Select size=”1″ name=”KurulumTipi”>
<Option value=”NewOSSetup”>Yeni Kurulum</Option>
<Option value=”ComputerChange”>Bilgisayar Degisimi</Option>
</Select>
Yukarıda yer alan kod satırları ise HTA file üzerinden girdiğimiz değerleri alarak daha önce oluşturmuş olduğumuz görev dizisi değişkenleri içerisine atayacağımız kod satırlarımız.
HTA dosyasının tamamına aşağıda yer alan github linki üzerinden ulaşabilirsiniz.
https://github.com/YenalT/ConfigMgr.git
İlgili HTA dosyamızı artık Configuration Manager görev dizisi üzerinden çağırabilir ve değişkenlerimizi kullanmaya başlayabiliriz.
Öncelikle görev dizimiz içerisinde Run Command Line adımı ekliyoruz ve paket olarak hazırladığımız HTA dosyamızı çağırıyoruz. Bu adımda komut satırına mshta.exe PFHTA_Latest.hta olarak da çalıştırabilirsiniz. Bu adım bizler için WinPE ile başlayan adımımızda bizlerden bilgisayar adını ve kurulum tipini seçmemizi isteyecek. Gireceğimiz değerleri bir değişken olarak alacak ve görev dizimize göre ilerleyecek.
Yine görev dizimize baktığımızda Install Operating System ve Upgrade Operating System görev dizileri yer alıyor. Bu adımları da yine HTA dosyamızda yer alan kurulum tipine göre ilerleyecek şekilde tasarladım.
Install Operating System görev dizisine başlaması için OSSetupType olarak NewOSSetup olarak gelirse değişkenimiz burada yer alan görev dizimiz çalışacak.
Eğer bizler HTA dosyasında yer alan OsSetupType değişkenini ComputerChange olarak gönderirsem bu seferde Upgrade Operating System görev dizimiz artık çalışıyor olacak.
Bahsettiğimiz ve gördüğümüz işletim sistemi tipini belirledikten sonra çalıştırmış olduğumuz görev dizileri seçimlerimize göre ilerleyeceğini belirledik. Peki burada tanımladığımız ama bahsetmediğimiz istemci isimlendirmesi için kullandığımız OSDComputerName hali hazırda custom bir değişken değil. Bu sebeple bu değişken için atamış olduğumuz değerimiz artık unnatend.xml içerisine tanımlayacak ve Setup Windows and Configuration Manager adımından sonra isimlendirmeyi bizim HTA üzerinden verdiğimiz şekliyle tanımlayarak kurulumu tamamlayacaktır.
Burada örnek olarak verdiğimiz HTA dosyası elbette çok farklı şekillerde geliştirilebilir kaldı ki daha önce de söylediğimiz gibi sadece HTA olarak değil Powershell scriptleri ile de bu adımları gerçekleştirebilirdik.
Örnek olması için eklemiş olduğum HTA dosyası farklı projelerde farklı ihtiyaçlara göre geliştirilebilir ve kullanılabileceğini anlatmaya çalıştım.
Eline sağlık. Çok güzel bir makale olmuş.