EN
EN

Powershell Profile Nedir ve Nasıl Kullanılır ?


Powershell Profile Nedir?

PowerShell Profilleri, ortamınızı özelleştirmenize ve başlattığınız her PowerShell Profili için öğeler eklemenize yardımcı olur. Karmaşık profillerde ya da birden fazla oluşturulan profillerin kullanılmasında planlama yapmanın önemi büyüktür. İyi yapılmayan planlamalar ile profillerin karışmasının önüne geçilemez. Bu nedenle kullanılacak profil tipine karar verilip öyle kullanılmalıdır. Planlama aşamasında yapılan yönetimsel efor ve bakım unsurları göz önünde bulundurulmalıdır. Bu tür konular basit örneklerle açıklanmaya çalışılmıştır.

PowerShell Profili, PowerShell'i her başlattığımızda çalışan bir betiktir. Profili özelleştirmek için bir profil komut dosyası oluşturulabilir. Oturuma özgü komutlar, değişkenler, tercih değişkenleri, takma adlar, işlevler, komutlar (Set-ExecutionPolicy hariç) ve sık kullandığınız PowerShell modülleri oluşturulabilir. 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 alacaktır. PowerShell Profil sayesinde her çalıştırdığınızda bunları içe aktarmanız veya yeniden oluşturmanız gerekmez. Her PowerShell açılışında oluşturmuş olduğumuz profiller kullanılabilir. Otomatik olarak PowerShell açıldığında oluşturduğumuz profil karşımıza çıkar. 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 (Geçerli kullanıcıya uygulanır)
-All Users, Current Host (Tüm kullanıcıları etkiler)

ISE için geçerli olan profiller:

-Current User, Current Host (Geçerli kullanıcıyı etkiler)
-All Users, Current Host (Tüm kullanıcıları etkiler)

Konsol ve ISE için geçerli olan profiller:

-Current User, All Hosts (Geçerli kullanıcıya uygulanır)
-All Users, All Hosts (Tüm kullanıcıları etkiler)

Sadece “$Profile” komutunu çalıştırıldığında default profile olan “Current User, Current Host” profilinin bulunduğu dizin görülür. Profillerin bulunduğu lokasyonları aşağıdaki komutlar ile öğrenebiliriz.

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şturabilir. 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: En doğru yöntem, basit ve 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çerisinde gerçekten olması gereken fonksiyonlar varsa bunları modül içerisinde barındırmak daha sağlıklıdır. Birden fazla profil kullanmanın hem avantaj hem de dezavantajları vardır.

Avantajları

-Basit ve problemsizdir.
-Konsol ya da ISE arasındaki komut uyumsuzluğu problemini ortadan kaldırır.

Dezavantajları

-Yönetim anlamında sarf edilecek 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.

Tek Profil Kullanma: Genel olarak kompleks profillerde tercih edilen yöntemdir. Birden fazla kullanıcı ve makinanın olduğu durumlarda tercih edilir. Tek profil kullanmanın belirli avantaj ve dezavantajları vardır.

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.

Dezavantajları

-Daha komplekstir.
-Planlamanın düzgün yapılması gerekir.

Tüm Kullanıcılar İçin Profil Kullanma ($Profile.AllUserAllHost): PowerShell ortamı tüm kullanıcılar için standart hale gelir. Her şey için tek bir lokasyondaki profil dosyası kullanılı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. Değişiklik yapıldığında bu değişiklik ortamda bu dosyayı kullanan tüm makinelere taşınması gerekir.

Merkezi Profil Kullanma: Gerekli profil bilgileri bir dosyaya eklendikten sonra bir paylaşımda saklanıp data source şeklinde profil dosyası gösterilebilir. Bu şekilde tek bir yerde oluşturulur, klasör izinleri ile de bu profile erişecek kullanıcılar belirlenebilir. Network erişimi olmadığı durumlarda dosyaya erişim olmaz buna dikkat edilmelidir. İzinler komut bazlı değil dosya seviyesinde klasör üzerinden yapılır. 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.

Powershell Profile Nasıl Kullanılır?

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 gerekli izni verelim.

Artık profil dosyası oluşturulabilir. Mevcut kullanıcı için bir profil oluşturalım. $Profile bir değişkendir ve varsayılan bir değerdir.

Oluşturmuş olduğumuz dosyaya, dosya yoluna gidip bakabiliriz.

Hangi profilin var olup olmadığını sorgulamak için Test-Path komutunu çalıştırılır.

Tüm kullanıcılar için de bir profil yapılandırmak istersek $Profile değişkenine birkaç değer daha eklenir aşağıdaki komut kullanılır. Bu komut, tüm kullanıcılar ve tüm ana bilgisayarlar (PowerShell ve PowerShell ISE) için bir profil dosyası yapılandıracaktır.

“New-Item -ItemType File -Path $PROFILE.AllUsersAllHosts –Force”

Profil dosyamızı oluşturduktan sonra artık profil dosyamızı özelleştirebiliriz. Bu özelleştirme işlemini PowerShell ISE üzerinde yapacağız. Windows PowerShell Tümleşik Komut Dosyası Ortamı (ISE), çok satırlı düzenleme, sekme tamamlama, sözdizimi renklendirme, seçmeli yürütme, bağlama duyarlı yardım ve sağdan kullanım desteği ile tek bir Windows tabanlı grafik kullanıcı arabiriminde komutları çalıştırabilir ve komut dosyalarını yazabilir. Ayrıca test edebilir ve hatalar ayıklayabilir. Basitçe söylemek gerekirse, PowerShell ISE bir komut dosyası düzenleyicisidir. Bu sebeple profil dosyasını ISE üzerinde açmak için aşağıdaki komutu kullanalım. Kullandığımız komut ve çıktı aşağıdadır.

Profile dosyasını ISE üzerinde açtığımızda yukarıdaki gibi boş olduğu görülür. PowerShell konsol açıldığında bizi karşılamasını istediğiniz modül, fonksiyon vb. ya da çalıştırmak istediğiniz herhangi bir komut varsa bu dosyaya yazılır. Örneğin “Get-Date” komutunu yazalım ve çalıştıralım.

Başka bir komut deneyelim. Örneğin “Write-Host” komutunu yazalım ve ekrana “Merhaba” yazdıralım. Burada renk seçenekleri olduğunu göreceksiniz komutu yazalım ve çalıştıralım.

Şimdi biraz daha uzun komutlarla farklı bir çıktı alalım.

PowerShell ISE’yi kaydedip kapatalım ve PowerShell’den de çıkış yapıp tekrardan açalım. Yukarıda yazmış olduğumuz kod dizini artık her PowerShell açılışında karşımıza çıkacaktır. Böylece basit bir profil oluşturma örneği yapılmıştır.

Profilimize basit bir alias yazalım. “yardim” yazdığımızda “Get-Help” cmdlet çalışsın. Ayrıca bir de fonksiyon kullanalım. “Show-Profil” yazdığımızda oluşturmuş olduğumuz profilimizi PowerShell ISE’de çıktısını alalım. Aşağıdaki kodlarımızı yazdıktan sonra kaydedip kapatalım ve PowerShell’imizi açalım.

Profil dosyasını açmak için oluşturmuş olduğumuz fonksiyonu çalıştıralım.

Profilimize yazmış olduğumuz aliası çalıştıralım. “yardim” yazdığımızda “Get-Help” cmdlet çalıştığını görmüş oluyoruz.

KAYNAKÇA

https://www.sconstantinou.com/powershell-profiles/

https://sid-500.com/2017/08/15/how-to-create-powershell-profiles/

https://sid-500.com/2018/01/16/powershell-for-beginners-part-6-powershell-profiles-and-the-ise/

https://www.mshowto.org/powershell-profile-nedir-nasil-kullanilir.html

https://www.youtube.com/watch?v=tk5EOE5-QHM&feature=emb_logo