Powershell Introduction

Tuğrul Kılıç
Turk Telekom Bulut Teknolojileri
5 min readApr 29, 2022

PowerShell, Microsoft tarafından hepimizin yakından tanıdığı Command Prompt yani kısaca “cmd” olarak herkesin bildiği komut satırı uygulamasına alternatif olarak geliştirilen yeni nesil bir komut satırı uygulamasıdır. Peki neden Powershell öğrenmeliyiz? Kısaca bahsedelim.

Özellikle biz Windows sistem yöneticileri olarak işlemlerimizi hızlandırmak amacıyla farklı yöntemler izlemekteydik. Yönetimi kolaylaştırmak amacıyla bazen basit toplu iş dosyaları ( batch file ), bazen de 3rd party araçları kullanmak durumunda kalıyorduk. Bu yüzden bizler windows sistem yöneticileri olarak Visual Basic scriptleri yada Java Scriptlerle yazılmış küçük programları bir yerlerden bulup değiştirip, yapmak istediğimiz işlemi gerçekleştirmek yada bu dilleri öğrenmek için çaba sarfetmek zorunda kalıyorduk. İşte burada yeni nesil cmd.exe diye tabir edilen yeni ve daha güçlü hali “Powershell” imdadımıza yetişti.

“Powershell ile neler yapabiliriz?”

1 — Bir powershell scripti yardımıyla uzaktan client ya da server makinelerimizi yönetebilir, toplu olarak konfigürasyon değişiklikleri yapabiliriz.

2 — Başka programlama dilleri(VB, Java, C# vb.) gibi programlama dillerine bağlı olmadan .NET altyapısını kullanarak yapmak istediğimiz işlemleri gerçekleştirebiliriz.

3 — Powershell Microsoft ürünleri için; uzaktan yönetim, raporlama, otomasyon, toplu işlemler ve yönetim için en ideal çözümlerden birisidir.

Tabii ki yukarıdaki örnekleri daha da çoğaltmamız mümkündür. Powershell ile aşağıdaki birçok Microsoft ürününün yönetimini sağlayabiliriz.

  • Exchange Server
  • Active Directory
  • Windows Server Components
  • SharePoint
  • SQL Server
  • System Center Family ( SCCM, SCOM, SCVMM,SCDPM,SCORCH, …)
  • Azure
  • M365

Sistemimizde Powerhell çalıştırabilmek için gerekli olan tek şey sistemde “ Microsoft.Net Framework ” uygulamasının kurulu olması zorunluluğudur.

Gelin hep birlikte Powershell versiyonlarını yakından görelim.

Version ReleaseDate OS

v1.0 — Nov-06 — Server 2008

v2.0—Oct-09 — Server 2008 R2

v3.0 — Sep-12 — Server 2012

v4.0 — Oct-13 — Server 2012 R2

v5.0—Feb-16 — Server 2016

v5.1—Jan-17 — Server 2016

Core v6.0 — Jan-18 — Cross Platform / Linux and MacOS

v7.0 — Mar-20 — Server 2019

v7.1 — Nov-20 — Server 2019

v7.2 — Dec-20- — Server 2019

v7.3 — Preview-

Sistemimizde çalışan versiyon bilgisine aşağıdaki komutu powershell ortamında çalıştırarak ulaşabiliriz.

Örnek : 1

Powershell komutlarını yürütmek için temelde 2 araç kullanıyoruz. Bunlar;

  • Windows Powershell
  • Windows Powershell ISE ( Integrated Scripting Enviroment )

Bu 2 araç arasındaki farklar ise kısaca şöyle açıklanabilir:

  • Windows Powershell bir komut arayüzüdür, ISE ise değiştirme ve düzenleme gibi bir takımı işlemlerin yapılabildiği grafiksel kullanıcı arabirimidir.
  • Windows Powershell geneldir, ISE ise çekici,renkli ve kullanıcı dostudur.
  • Console ekranında bir komutu kopyaladıktan sonra “Alt + Space + E + P “ tuş kombinasyonuyla komutu yapıştırabilir, ISE ekranında ise “ Ctrl + V “ tuş kombinasyonunu kullanabiliriz.
  • Console ekranında tek satırlık komutları çalıştırmak kolaydır, fakat çok satırlı komutlarda hata bulma ve arama yapma zordur; ISE ekranında ise bu işlemler daha basit ve kolaydır.
  • Console ekranın tek bir satırda komut okumak ve yazmak zaman alır, ISE ekranında ise bu işlemler daha kolaydır.

Yapılan işlemleri kayıt altına almak ve geriye dönük çıktı üretmek için aşağıdaki komutu kullanabiliriz. Bundan sonra komut satırında yazdığımız her şey bu dosyaya kaydedilecektir.

İşlemi durdurmak için aşağıdaki komutu kullanabiliriz.

Powershell ortamında bir komutu çalıştırmak için yardım almak isteyebiliriz. Yardım modüllerini güncelleyerek en güncel komut kullanım şekillerini öğrenebiliriz. Güncelleme için 2 yöntem bulunmaktadır. Bunlar;

  • Online Update = Update-Help komutunu kullanarak Microsoft sunucuları üzerinden internet bağlantımız aracılığıyla güncelleme işlemini yapabiliriz.
  • Offline Update = İlk önce “Save-Help C:\help” klasörüne güncel yardım modüllerini kaydettikten sonra güncellemek istediğimiz makineye bu klasörü kopyalayarak “Update-Help –SourcePath C:\help” komutuyla yardım modüllerini güncelleyebiliriz.

Yardım modüllerini güncelledikten sonra aşağıdaki farklı komut kullanımlarıyla ilgili komut hakkında bilgi sahibi olabiliriz.

  • Get- Help Get-EventLog –Examples ( Komut kullanım örnekleri )
  • Get-Help Get-EventLog –Detailed ( Detaylı kullanım bilgisi )
  • Get-Help Get-EventLog –Full ( Sözdizimi , kullanım, örnekler tüm bilgi )
  • Get-Help Get-EventLog –Online ( Microsoft sitesinden control etme )
  • Get-Help Get-EventLog –ShowWindow ( Pencere içerisinde gösterme)

Powershell içerisinde yazmış olduğumuz komutların bazıları parametre alan bazıları parametresiz çalışan komutlardır. Parametreli çalışan komutlar 2 kısımda incelenmektedir. Bunlar;

  • Named Parameters = Parametre ismini yazarak kullandığımız kullanım şeklidir. Örnek: Get-EventLog -LogName Security
  • Positional Parameters = Parametre ismini yazmadan kullandığımız kullanım şeklidir. Örnek: Get-Service Spooler

Bir parametrenin positional parameter olup olmadığını aşağıdaki komut çıktısıyla öğrenebiliriz.

Microsoft bizlere Powershell uygulamasında “ Wildcard “ ( Joker Karakterler ) kullanma esnekliğini de sağlamıştır. Kullanılan wildcard tipleri ve örnekleri aşağıda gösterilmiştir.

Son olarak “ Aliases “ konusuna değinmek istiyorum. Aliases yani Türkçe karşılığıyla takma adlar Powershell ortamında uzun komutları kısaltmamıza yarayan kısayollar olarak düşünebiliriz. Örnek olarak gsv=Get-Service, gci=Get-ChildItem, ? = Where ve % = ForEach olarak gösterebiliriz. Powershell içerisinde yüklü gelen tüm aliases kısayollarına Get-Alias komutunu kullanarak ulaşabilir, dilersek aşağıdaki komut yardımıyla kendi aliases kısayollarımızı oluşturabiliriz.

Alias Oluşturma

Set-Alias -Name st -Value Start-Transcript

Alias Kullanım

st -Name D:\log.txt

Vakit ayırıp okuduğunuz için teşekkür eder, saygılar dilerim…

--

--