Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Tarihsel olarak, Unix sistemlerindeki komut satırı yardımcı programları Windows'takinden daha iyi geliştirilmiştir, ancak yeni bir çözümün ortaya çıkmasıyla durum değişti.

Windows PowerShell, sistem yöneticilerinin çoğu rutin görevi otomatikleştirmesine olanak tanır. Bununla birlikte ayarları değiştirebilir, hizmetleri durdurabilir ve başlatabilir ve ayrıca yüklü uygulamaların çoğunda bakım yapabilirsiniz. Mavi pencereyi başka bir komut yorumlayıcısı olarak algılamak yanlış olur. Bu yaklaşım Microsoft'un önerdiği yeniliklerin özünü yansıtmamaktadır. Aslında Windows PowerShell'in olanakları çok daha geniştir: Kısa bir makale dizisinde Microsoft çözümünün daha aşina olduğumuz araçlardan nasıl farklı olduğunu anlamaya çalışacağız.

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Ana özellikleri 

Elbette, Windows PowerShell öncelikle .NET Framework ve daha sonra .NET Core üzerinde oluşturulmuş bir komut dosyası kabuğudur. Metin verilerini kabul eden ve döndüren kabukların aksine Windows PowerShell, özellikleri ve yöntemleri olan .NET sınıflarıyla çalışır. PowerShell, ortak komutları çalıştırmanıza olanak tanır ve ayrıca COM, WMI ve ADSI nesnelerine erişmenizi sağlar. Erişim için dosya sistemi veya Windows kayıt defteri gibi çeşitli depoları kullanır. sağlayıcılar. Çeşitli işlemleri uygulamak için PowerShell çalıştırılabilir bileşenlerini diğer uygulamalara yerleştirme olasılığını belirtmekte fayda var. grafiksel bir arayüz aracılığıyla. Bunun tersi de doğrudur: Birçok Windows uygulaması, yönetim arayüzlerine PowerShell aracılığıyla erişim sağlar. 

Windows PowerShell şunları yapmanızı sağlar:

  • İşletim sistemi ayarlarını değiştirin;
  • Hizmetleri ve süreçleri yönetmek;
  • Sunucu rollerini ve bileşenlerini yapılandırın;
  • Yazılımı kur;
  • Kurulu yazılımı özel arayüzler aracılığıyla yönetin;
  • Yürütülebilir bileşenleri üçüncü taraf programlara yerleştirin;
  • Yönetim görevlerini otomatikleştirmek için komut dosyaları oluşturun;
  • Dosya sistemi, Windows kayıt defteri, sertifika deposu vb. ile çalışın.

Kabuk ve geliştirme ortamı

Windows PowerShell'in iki biçimi vardır: komut kabuğuna sahip konsol öykünücüsüne ek olarak bir Tümleşik Komut Dosyası Ortamı (ISE) vardır. Komut satırı arayüzüne erişmek için Windows menüsünden uygun kısayolu seçmeniz veya Çalıştır menüsünden powershell.exe dosyasını çalıştırmanız yeterlidir. Ekranda, yetenekleri bakımından antediluvian cmd.exe'den önemli ölçüde farklı olan mavi bir pencere görünecektir. Unix sistemleri için komut kabukları kullanıcılarının aşina olduğu otomatik tamamlama ve diğer özellikler mevcuttur.

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Kabukla çalışmak için bazı klavye kısayollarını hatırlamanız gerekir:

  • Yukarı ve aşağı oklar, önceden yazılan komutları tekrarlamak için geçmişi kaydırır;
  • Satırın sonundaki sağ ok, önceki komutu karakter karakter yeniden yazar;
  • Ctrl+Home, yazılan metni imleç konumundan satırın başına kadar siler;
  • Ctrl+End, metni imleçten satırın sonuna kadar siler.

F7, yazılan komutları içeren bir pencere gösterir ve bunlardan birini seçmenizi sağlar. Konsol ayrıca fareyle metin seçme, kopyala-yapıştır, imleç konumlandırma, silme, geri alma ve sevdiğimiz her şeyle çalışır.

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Windows PowerShell ISE, sekmeli ve sözdizimi ile vurgulanmış kod düzenleyicisi, komut oluşturucusu, yerleşik hata ayıklayıcısı ve diğer programlama özellikleriyle eksiksiz bir geliştirme ortamıdır. Geliştirme ortamı düzenleyicisinde komut adından sonra bir kısa çizgi yazarsanız, tür göstergesiyle birlikte açılır listede mevcut tüm seçenekleri görürsünüz. PowerShell ISE'yi sistem menüsündeki bir kısayol aracılığıyla veya powershell_ise.exe yürütülebilir dosyasını kullanarak başlatabilirsiniz.

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Cmdlet'ler 

Windows PowerShell'de sözde. cmdlet'ler. Bunlar çeşitli işlevler sağlayan özel .NET sınıflarıdır. “Eylem-Nesne” (ya da dilerseniz “Fiil-İsim) prensibine göre isimlendirilirler ve tireyle ayrılmış bağlaç, doğal dildeki cümlelerdeki yüklem ve özneye benzer. Örneğin, Get-Help kelimenin tam anlamıyla "Yardım Al" anlamına gelir veya PowerShell bağlamında: "Yardım Göster". Aslında bu, Unix sistemlerindeki man komutunun bir benzeridir ve PowerShell'deki kılavuzların –help veya /? tuşuyla cmdlet'leri çağırarak değil, bu şekilde talep edilmesi gerekir. PowerShell: Microsoft'un oldukça ayrıntılı bir açıklaması var.

Cmdlet'ler, Get'e ek olarak eylemleri belirtmek için başka fiiller de kullanır (ve kesin konuşmak gerekirse yalnızca fiilleri değil). Aşağıdaki listede bazı örnekler veriyoruz:

Add - eklemek;
Clear - temizlemek;
Enable - aç;
Disable - kapatmak;
New - yaratmak;
Remove - silmek;
Set - sormak;
Start - koşmak;
Stop - durmak;
Export - ihracat;
Import - içe aktarmak.

Sistem, kullanıcı ve isteğe bağlı cmdlet'ler vardır: yürütme sonucunda hepsi bir nesneyi veya bir nesne dizisini döndürür. Büyük/küçük harfe duyarlı değildirler; komut yorumlayıcısının bakış açısından Get-Help ile get-help arasında hiçbir fark yoktur. ';' karakteri ayırma için kullanılır, ancak yalnızca birkaç cmdlet'in aynı satırda çalıştırılması durumunda yerleştirilmesi zorunludur. 

Windows PowerShell cmdlet'leri modüller halinde gruplandırılmıştır (NetTCPIP, Hyper-V vb.) ve nesneye ve eyleme göre arama yapmak için bir Get-Command cmdlet'i vardır. Bununla ilgili yardımı şu şekilde görüntüleyebilirsiniz:

Get-Help Get-Command

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Varsayılan olarak komut kısa bir yardım görüntüler ancak parametreler (bağımsız değişkenler) gerektiğinde cmdlet'lere aktarılır. Onların yardımıyla, örneğin ayrıntılı (parametre -Ayrıntılı) veya tam (parametre -Tam) yardım alabilir ve ayrıca örnekleri (parametre -Örnekler) görüntüleyebilirsiniz:

Get-Help Get-Command -Examples

Windows PowerShell'deki Yardım, Update-Help cmdlet'i tarafından güncelleştirilir. Komut satırının çok uzun olduğu ortaya çıkarsa, cmdlet bağımsız değişkenleri '`' hizmet karakterini yazıp Enter tuşuna basarak bir sonraki satıra taşınabilir - yalnızca komutu bir satıra yazmayı bitirip başka bir satıra devam etmek işe yaramaz.

Aşağıda yaygın olarak kullanılan cmdlet'lerin bazı örnekleri verilmiştir: 

Get-Process - sistemde çalışan işlemleri gösterin;
Get-Service — hizmetleri ve durumlarını gösterin;
Get-Content - dosyanın içeriğini görüntüleyin.

Yaygın olarak kullanılan cmdlet'ler ve harici yardımcı programlar için Windows PowerShell'in kısa eşanlamlıları vardır - takma adlar (İngilizce'den. Takma ad). Örneğin dir, Get-ChildItem'in takma adıdır. Eşanlamlılar listesi aynı zamanda Unix sistemlerinden gelen komutların analoglarını da içerir (ls, ps, vb.) ve Get-Help cmdlet'i help komutu tarafından çağrılır. Eş anlamlıların tam listesi Get-Alias ​​​​cmdlet'i kullanılarak görüntülenebilir:

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Komut Dosyaları, İşlevler, Modüller ve PowerShell Dili

Windows PowerShell komut dosyaları, .ps1 uzantılı düz metin dosyaları olarak depolanır. Bunları çift tıklayarak başlatamazsınız: içerik menüsünü çağırmak için sağ tıklamanız ve "PowerShell'de Çalıştır" öğesini seçmeniz gerekir. Konsoldan betiğin tam yolunu belirtmeniz veya uygun dizine gidip dosya adını yazmanız gerekecektir. Komut dosyalarının çalıştırılması da sistem ilkesiyle sınırlıdır ve geçerli ayarları kontrol etmek için aşağıdaki değerlerden birini döndüren Get-ExecutionPolicy cmdlet'ini kullanabilirsiniz:

Restricted — komut dosyalarının başlatılması devre dışıdır (varsayılan olarak);
AllSigned - yalnızca güvenilir bir geliştirici tarafından imzalanan komut dosyalarının başlatılmasına izin verilir;
RemoteSigned - imzalı ve kendi komut dosyalarının çalıştırılmasına izin verildi;
Unrestricted - herhangi bir komut dosyasının çalıştırılmasına izin verildi.

Yöneticinin iki seçeneği vardır. En güvenli olanı komut dosyalarını imzalamayı içerir, ancak bu oldukça ciddi bir büyücülüktür - bunu gelecek makalelerde ele alacağız. Şimdi en az direnç yolunu izleyelim ve politikayı değiştirelim:

Set-ExecutionPolicy RemoteSigned

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Bunu yapmak için PowerShell'i yönetici olarak çalıştırmanız gerekir, ancak mevcut kullanıcının politikasını değiştirmek için özel bir parametre kullanabilirsiniz.

Komut dosyaları, komutları daha önce tartışılan cmdlet'lerle aynı prensibe göre adlandırılan nesne yönelimli bir programlama dilinde yazılmıştır: "Action-Object" ("Fiil-İsim"). Ana amacı idari görevleri otomatikleştirmektir, ancak gerekli tüm yapılara sahip tam teşekküllü bir yorumlanmış dildir: koşullu atlama, döngüler, değişkenler, diziler, nesneler, hata işleme vb. Komut dosyası oluşturmak için herhangi bir metin düzenleyici uygundur ancak en iyisi Windows PowerShell ISE'yi çalıştırmaktır.

Parametreleri betiğe aktarabilir, gerekli hale getirebilir ve varsayılan değerleri ayarlayabilirsiniz. Ayrıca Windows PowerShell, Function yapısını ve küme parantezlerini kullanarak cmdlet'lerle aynı şekilde işlevler oluşturmanıza ve çağırmanıza olanak tanır. İşlevleri olan bir komut dosyasına modül adı verilir ve .psm1 uzantısına sahiptir. Modüllerin PowerShell ortam değişkenlerinde tanımlanan dizinlerde saklanması gerekir. Bunları aşağıdaki komutla görüntüleyebilirsiniz:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

konveyör

Son örnekte Unix kabuk kullanıcılarının aşina olduğu bir yapı kullandık. Windows PowerShell'de dikey çubuk, bir komutun çıktısını diğerinin girişine aktarmanıza da olanak tanır, ancak işlem hattının uygulanmasında önemli bir fark vardır: artık bir dizi karakterden veya bir tür karakterden bahsetmiyoruz. metin. Yerleşik cmdlet'ler veya kullanıcı tanımlı işlevler, nesneleri veya nesne dizilerini döndürür ve bunları giriş olarak da alabilir. Bourne kabuğu ve onun birçok ardılı gibi PowerShell de karmaşık görevleri bir işlem hattıyla kolaylaştırır.

En basit boru hattı örneği şuna benzer:

Get-Service | Sort-Object -property Status

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
İlk olarak Get-Service cmdlet'i yürütülür ve ardından onun tarafından alınan tüm hizmetler Status özelliğine göre sıralanmak üzere Sort-Object cmdlet'ine iletilir. İşlem hattının önceki bölümünün sonucunun aktarılacağı bağımsız değişken, türüne bağlıdır; genellikle bu, GirişObject'tir. Bu konu PowerShell programlama diline adanmış bir makalede daha ayrıntılı olarak ele alınacaktır. 

Dilerseniz zincire devam ederek Sort-Object işleminin sonucunu başka bir cmdlet'e aktarabilirsiniz (soldan sağa doğru yürütülecektir). Bu arada, Windows kullanıcıları aynı zamanda tüm Unixoid'lerde tanıdık olan sayfalandırma yapısına da erişebilirler: 

Get-Service | Sort-Object -property Status | more

Görevleri arka planda çalıştırma 

Çoğu zaman, kabuk oturumunda yürütülmesinin sonucunu beklememek için arka planda belirli bir komutu çalıştırmak gerekir. Windows PowerShell'in bu durum için birkaç cmdlet'i vardır:

Start-Job - bir arka plan görevinin başlatılması;
Stop-Job — arka plan görevini durdurun;
Get-Job — arka plan görevlerinin listesini görüntüleyin;
Receive-Job — bir arka plan görevinin sonucunun görüntülenmesi;
Remove-Job — bir arka plan görevinin silinmesi;
Wait-Job - arka plan görevinin tekrar konsola aktarılması.

Bir arka plan görevi başlatmak için Start-Job cmdlet'ini kullanırız ve küme parantezleri içinde bir komut veya komutlar kümesi belirtiriz:

Start-Job {Get-Service}

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Windows PowerShell'deki arka plan görevleri, adları bilinerek değiştirilebilir. Öncelikle bunları nasıl göstereceğimizi öğrenelim:

Get-Job

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Şimdi Job1 işinin sonucunu gösterelim:

Receive-Job Job1 | more

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Her şey oldukça basit.

Uzaktan komut yürütme

Windows PowerShell, komutları ve komut dosyalarını yalnızca yerel bilgisayarda değil, aynı zamanda uzak bir bilgisayarda ve hatta tüm makine grubunda yürütmenize olanak tanır. Bunu yapmanın birkaç yolu vardır:

  • Birçok cmdlet'in bir parametresi vardır -ComputerNameancak bu şekilde örneğin bir konveyör oluşturmak işe yaramayacaktır;
  • cmdlet Enter-PSSession uzaktaki bir makinede etkileşimli bir oturum oluşturmanıza olanak tanır; 
  • Bir cmdlet kullanma Invoke-Command komutları veya komut dosyalarını bir veya daha fazla uzak bilgisayarda çalıştırabilirsiniz.

PowerShell sürümleri

PowerShell, 2006'daki ilk sürümünden bu yana çok değişti. Araç, farklı donanım platformlarında (x86, x86-64, Itanium, ARM) çalışan birçok sistem için mevcuttur: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux ve OS X. En son sürüm 6.2, 10 Ocak 2018'de yayınlandı. Önceki sürümler için yazılan komut dosyalarının daha sonraki sürümlerde çalışması muhtemeldir, ancak PowerShell'in geliştirme yılları boyunca çok sayıda yeni cmdlet sunması nedeniyle yedekleme sorunlu olabilir. Bilgisayarda yüklü olan komut kabuğunun sürümünü, $PSVersionTable yerleşik değişkeninin PSVersion özelliğini kullanarak öğrenebilirsiniz:

$PSVersionTable.PSVersion

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Ayrıca cmdlet'i de kullanabilirsiniz:

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler
Aynı şey Get-Host cmdlet'i için de yapılır. Aslında pek çok seçenek var ancak bunları kullanmak için PowerShell programlama dilini öğrenmeniz gerekiyor, bunu da birazdan yapacağız. sonraki makale

sonuçlar 

Microsoft, komut dosyaları geliştirmek için uygun bir entegre ortama sahip, gerçekten güçlü bir kabuk oluşturmayı başardı. Unix dünyasında bize tanıdık gelen araçlardan, Windows ailesinin işletim sistemleriyle ve bunlara yönelik yazılımlarla ve .NET Core platformuyla derin entegrasyon nedeniyle farklılık gösterir. PowerShell nesne yönelimli bir kabuk olarak adlandırılabilir çünkü cmdlet'ler ve kullanıcı tanımlı işlevler nesneleri veya nesne dizilerini döndürür ve bunları girdi olarak alabilir. Windows'taki tüm sunucu yöneticilerinin bu araca sahip olması gerektiğini düşünüyoruz: komut satırı olmadan yapabilecekleri zaman geçti. Gelişmiş bir konsol kabuğuna özellikle ihtiyaç duyulur Windows Server Core çalıştıran düşük maliyetli VPS'mizama bu tamamen farklı bir hikaye.

Windows PowerShell nedir ve ne ile yenir? Bölüm 1: Temel Özellikler

Ankete sadece kayıtlı kullanıcılar katılabilir. Giriş yapLütfen.

Serinin sonraki makalelerinde ilk olarak hangi konulara değinilmeli?

  • %53,2PowerShell123'te Programlama

  • %42,4PowerShell98 İşlevleri ve Modülleri

  • %22,1Kendi senaryolarınızı nasıl imzalayabilirsiniz?51

  • %12,1Sağlayıcılar (sağlayıcılar) aracılığıyla depolarla çalışma28

  • %57,6PowerShell133'ü kullanarak bilgisayar yönetimini otomatikleştirin

  • %30,7Yazılım yönetimi ve PowerShell yürütülebilir dosyalarının üçüncü taraf ürünlere yerleştirilmesi71

231 kullanıcı oy kullandı. 37 kullanıcı çekimser kaldı.

Kaynak: habr.com

Yorum ekle