Sistem yönetimi sırasında Powershell üzerine kullandığımız Custom Alias’lar, fonksiyonlar yada başka türlü tanımlamalar illaki vardır. Genelde bu özelleştirmeleri bir Script dosyasında tutup, Powershell’de işlem yapacağımız zaman bu Script dosyasını çalıştırmamız gerekir. Bu işlemi her Powershell konsol açtığımızda yapmak bir süre sonra sıkıcı bir hal alabilir.
Bu sıkıntıyı aşmak ve daha standart bir yöntem kullanmak için Powershell Profile’dan faydalanmamız gerekiyor. Powershell Profile’da aslında builtin olarak gelen fakat boş olan bir Scripttir. Bu Script Powershell konsolunu her açtığımızda çalıştırılır. Dolayısıyla yaptığımız özelleştirmeleri bu Script içerisine yazdığımızda otomatik olarak özelleştirmelerin hepsi her konsol açılışında yüklenmiş olur.
Resim-1
Altı adet farklı Profil bulunur. Powershell konsol ve ISE tüm kullanıcıları ya da geçerli kullanıcıyı etkileyecek kendi Profillerine sahiptir.
Powershell Konsol için geçerli olan Profiller
- Current User, Current Host (Konsol için geçerlidir – Geçerli kullanıcıya uygulanır)
- All Users,Current Host (Konsol için geçerlidir – Tüm kullanıcıları etkiler)
ISE için geçerli olan Profiller
- Current User, Current Host (ISE için geçerlidir – Gerçerli kullanıcıyı etkiler)
- All Users, Current Host(ISE için geçerlidir – Tüm kullanıcıları etkiler)
Konsol ve ISE için geçerli olan Profiller
- Current User,All Hosts (Konsol ve ISE için geçerlidir – Geçerli kullanıcıya uygulanır)
- All Users, All Hosts (Kosnol ve ISE için geçerlidir – Tüm kullanıcıları etkiler)
Profillerin bulunduğu lokasyonları aşağıdaki gibi öğrenebilirsiniz.
Resim-2
Sadece $Profile komutunu çalıştırdığınızda default Profile olan “CurrentUser,current host” Profilinin bulunduğu dizini görebilirsiniz.
Resim-3
Default olarak currentUser-CurrentHost Profilini konfigüre eder.
Yönetimsel işe göre hangi Profilin seçileceğine karar verilmesi gerekir. Yapılacak işlemler ile ilgili farklı kullanıcılar kullanılıyor ise all users tipindeki Profilin kullanılması gereklidir.
Profil içerisinde çok fazla item barındırmıyorsa (komut,fonksiyon vb..) Powershell konsol için ve ISE için ayrı ayrı Profiller oluşturabilirsiniz. Burada dikkat edilecek nokta bazı komutların sadece konsolda bazılarının ise sadece ISE’de çalıştığının göz önünde bulundurulup Profiller ona göre oluşturulmalıdır.
ÇOKLU PROFIL KULLANMA
Birden fazla Profil kullanmak size hem avantaj hem de dezavantaj sağlayacaktır. Kısaca bunlara değinecek olursak,
1. Avantajlar:
- Basit ve problemsizdir.
- Konsol ya da ISE arasındaki komut uyumsuzluğu problemini ortadan kaldırır.
2. Dezavantajlar:
- Yönetim anlamında sarfedilecek efor iki katına çıkar. Hem Powershell konsol hem de ISE için konfigürasyon yapılması gerekir.
- Powershell konsol ve ISE Profilleri farklı komutlar içerebilir. Bu da konsol ve ISE arasında uyumsuzluk meydana getirebilir.
- Yapılacak bakım işlemlerinde birden çok Profilin gözden geçirilmesi gerekir.
Burada yapılacak en doğru yöntem basit ve global(hem konsolda hem de ISE’de çalışabilen) Profiller kullanmaktır. Admin ya da yetkili kullanıcı gereksinimi olmayan durumlarda tercih edilmelidir.
Powershell Profillerin sayılarının artması yönetim ve bakım anlamında fazla efor anlamına gelir. Bu Profiller içersinde gerçekten olması gereken fonsiyonlar varsa bunları modül içersinde barındırmak daha sağlıklıdır.
TEK PROFIL KULLANMA
Tek Profil kullanmakta birden fazla Profil kullanmada olduğu gibi avantaj ve dezavantaja sahiptir. Bunlara kısaca değinecek olursak;
1. Avantajlar:
- Daha az iş yükü gerektirir.
- Çoklu Profile göre oldukça basittir.
- Farklı ortamların uyumlu olmasını sağlar(Powershell konsol,ISE vb.)
- Profil başka makinelere kolaylıkla taşınabilir.
2. Dezavantajlar:
- Daha komplekstir.
- Planlamanın düzgün yapılması gerekir.
Genel olarak kompleks Profillerde tercih edilen yöntemdir. Birden fazla kullanıcı ve makinanın olduğu ortamlarda tercih edilen yöntemdir.
All User All Host Profile Kullanma ($Profile.AllUserAllHost)
Tüm kullanıcılar için standart Profil’dir. Powershell ortamı herkes için standart hale gelir. Herşey için tek bir lokasyondaki Profil dosyası kullanılır. Bu Profil dosyası tüm kullanıcı ve bilgisayarlara uygulanır. Herkese aynı Profil dosyası uygulandığı için Admin ve admin olmayan kullanıcı çakışması ortadan kalkmış olur. Merkezi yönetim için oldukça iyidir.
Değişiklik yapmak için makinede admin hakkına sahip olmak gerekir. Bazı komutlar ISE’de bazıları ise Powershell konsolda çalışmayabilir. Değişiklik yapıldığında bu değişiklik ortamda bu dosyayı kullanan tüm makinelere taşınması gerekir. Bu Profil tipininin işletim sistemi imajları ile dağıtılması önerilir.
Central Profile Kullanma
Gerekli Profil bilgileri bir dosyaya eklendikten sonra bir paylaşımda saklanıp data source şeklinde Profil dosyası gösterilebilir. Bu şekilde tek bir yer update edilir, klasör izinleri ile de bu Profile erişecek kullanıcılar belirlenebilir.
Dikkat edilecek nokta, network erişimi olmadığı durumlarda dosyaya erişim olmaz. İzinler dosya seviyesinde klasör üzerinden atanır. Komut bazlı izin ataması yapılamaz. Belirli hostlar için belirli komutları filtreleme kompleks bir hal alır. Merkezi Script git gide büyüdükçe bakımı da zorlaşır.
Bu tarz Scriptlerde basit fonksiyonların kullanılması önerilir. Networkteki bilgisayarların ortak bir Profil kullanması için konfigüre edilir.
Şimdi basit bir kaç örnek ile Powershell Profile’ı açıklamaya devam edelim.
Powershell Profile bir Script olduğu için, öncelikle işletim sistemi üzerinde Script Execution’a izin vermek gerekir. Bu amaçla ilk olarak aşağıdaki komutu çalıştırıp Script execution’a izin verelim.
Resim-4
İşlemin ardından artık Profile dosyamızı özelleştirebiliriz. Bu özelleştirme işlemini Powershell ISE üzerinde yapacağız. Bu sebeple Profile dosyasını ISE üzerinde açmak için aşağıdaki komutu kullanalım.
Resim-5
Profile dosyasını ISE üzerinde açtığımızda aşağıdaki gibi boş olduğu görülür. Powershell konsol açıldığında yüklenmesini istediğiniz modül,fonksiyon vb. ya da çalıştırılmasını istediğiniz herhangi bir komut varsa bu dosya ya yazmanız gerekir.
Resim-6
Resim-7
Profilin var olup olmadığını sorgulamak için “Test-Path” komutunu çalıştırabilirsiniz.
Resim-8
Resim-9
İstediğiniz tip’te Profil oluşturmak için aşağıdaki komutu kullanıp Profil tipini belirtmeniz yeterli olur.
Resim-10
Resim-11
;
Resim-12
Şimdi örnek olarak Current User, Current Host Profilini (Default Profil) editleyip birkaç fonksiyon ve komut yazalıp Profil kullanımını basit olarak anlatalım.
Profil dosyasını açıp örnek bir adet Custom alias ve bir adet Custom fonksiyon yazıp dosyayı kaydedelim.
Resim-13
Kayıt işleminin ardından Powershell konsolunu kapatıp açalım. Konsol açıldığında oluşturduğumu Profil otomatik olarak çalışacaktır.
Ardından “Get-Help” cmdlet’i için oluşturduğumuz Custom alias’ı çalıştıralım.
Bu amaçla yardım yazdığımızda aşağıdaki gibi get-help cmdlet’inin çalıştırıldığınu görebilirsiniz.
Resim-14
Yine Profil dosyasını açmak için Custom bir fonksiyon oluşturmuş ve Profil dosyasına kaydetmiştik. Şimdi bu Custom fonksiyonu çalıştıralım.
Resim-15
Fonksiyon çalıştırıldığında yukarıdaki gibi Profil dosyasının açıldığını görebilirsiniz.
Temelde Powershell Profile’i basit bir örnekle açıklamış olduk.
Daha karmaşık Profillerin ya da birden fazla Profil kullanmanın planlama gerektirdiğini unutmamamız gerekir. Diğer bir önemli nokta ise kullanılacak Profil tipine karar verilmesidir. Planlama aşamasında yönetimsel efor ve bakım unsurları göz önünde bulundurulmalıdır.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
Windows Powershell 5.0 ebook.