Powershell: programla nasıl çalışılır, komut dosyaları oluşturulur, çalıştırılır ve değiştirilir. Komut dosyaları yazma ve çalıştırma. PowerShell Kullanarak Bilgisayarınızda Yoklamayı Test Etme

  • 09.05.2019

Bu yazıda, Microsoft'tan böyle bir teknolojiyi ele alacağız. Windows PowerShell'i , PowerShell'in ne olduğu, cmdlet'lerin ve ardışık düzenin ne olduğu, komut dosyalarının ve modüllerin nasıl yazılacağı hakkında konuşacağız ve ayrıca eşit derecede önemli ve diğer konulara değineceğiz. kullanışlı özellikler Windows PowerShell'i.

Windows PowerShell'in ortaya çıkmasına ne katkıda bulundu?

PowerShell'in ortaya çıkmasından önce, ( ve var) hizmetleri otomatikleştirmek ve yönetmek için aşağıdaki araçlar: Windows komut satırı ve Windows Komut Dosyası Ana Bilgisayarı. Ancak bu teknolojilerin dezavantajları vardır.

saat Komut satırı Windows, bazı yönetim görevlerini yerine getirme ve bir eylem algoritması yazma, onu bir komut dosyası (yarasa dosyası) olarak kaydetme becerisine sahiptir, ayrıca bazı programlama öğelerini kullanabilirsiniz, örneğin, değişkenleri, koşullu yapıları ve hatta döngüler gibi bir şeyi kullanabilirsiniz. .

Çoğunluk yazılım ürünleri bir konsol arayüzüne sahiptir, yani programı komut satırını kullanarak kontrol edebilirken, grafik arayüz maliyetlerinin olmaması nedeniyle kaynak tasarrufu sağlayabiliriz. Sunucu İşletim Sistemi için Microsoft Windows Server GUI olmayan sürümleri bile yayınlar ( Sunucu Çekirdeği, Windows Server 2016'da Nano Sunucu bile var), ancak tüm bunlar yeterli değil, çünkü komut satırının olanakları sınırlı, yani. biraz yaz karmaşık mantık bir şeyi otomatikleştiremeyeceğiz ve yapabilirsek bunun için zamana ve bilgiye ihtiyacımız olacak.

Ayrıca, komut satırının dezavantajı, sunucuyu tam olarak yönetmek için çeşitli kullanmamızdır. konsol yardımcı programları yazılım ürünleri ve bu nedenle yönetim için komut satırını kullanmak, tüm bu yardımcı programların olması gerçeği açısından gerçekten zordur. farklı sözdizimi, parametreler, kullanım yöntemleri ve tipik görevleri gerçekleştirmek için, yani. her gün, hepsini aklınızda tutmanız ve standart olmayan görevleri yerine getirmeniz için önce yardım veya belgeleri okumanız gerekir.

Windows Komut Dosyası Ana Bilgisayarı teknolojisi, WSH komut dosyaları yazarak otomasyonları da dahil olmak üzere komut satırının yaptığı tüm yönetim görevlerini gerçekleştirmenize olanak tanır, ancak burada zaten tam teşekküllü programlama dillerini kullanabiliriz ( VBScript ve JScript), yani karmaşık mantık ve algoritmalar uygulayabilirsiniz. Ek olarak, WSH yardımıyla yazılım ürünlerini bir nesne arayüzü üzerinden yönetiyoruz, diğer Windows sözcükleri Komut Dosyası Ana Bilgisayarı çok daha fazlası soğutucu' komut satırından daha. Ancak bu teknoloji, sistem yöneticileri için bu yönetimin yönetimi ve otomasyonu için ideal bir araç haline gelmedi, çünkü Windows Komut Dosyası Ana Bilgisayarı, sistem yöneticileri için aslında gereksiz olan yukarıdaki programlama dilleri hakkında bilgi gerektiriyordu. Yöneticiler, yalnızca bazı eylemleri programlama ve derinlemesine inceleme becerisine sahip basit bir yönetim aracına ihtiyaç duyar. nesne modelleri VBScript ve JScript programlama dillerinde yazılım ürünleri istemiyorlar.

Sonuç olarak Microsoft'un sistem yöneticileri için sistem yöneticilerinin tüm ihtiyaçlarını hem yönetim ve otomasyon yetenekleri hem de kolaylık ve kullanım kolaylığı açısından yüzde 100 karşılayacak bir yönetim aracı geliştirmesi gerekiyordu ve böylece Windows PowerShell doğdu. .

Windows PowerShell nedir?

Windows PowerShell'i Windows işletim sistemlerini yönetmek ve yapılandırmak için tasarlanmış bir komut dosyası dili ve Windows komut kabuğudur. PowerShell, CRL ve .NET Framework'ü temel alır ve metni kabul eden ve döndüren komut satırının aksine, Windows PowerShell nesnelerle çalışır. PowerShell'deki her nesne, bu nesneleri işlemek için kullanabileceğiniz özelliklere ve yöntemlere sahiptir.

Windows PowerShell'de Microsoft, cmdlet kavramını geliştirdi ( cmdlet'ler), bir komut adlandırma sistemidir " Fiil isim». Bu sistem sistem yöneticilerinin PowerShell ile çalışmayı hızla öğrenmesini ve basitleştirmesini sağlar.

Windows PowerShell ile şunları yapabilirsiniz:

  • Dosya sistemine erişim sağlayın;
  • kayıt defterini yönetmek;
  • hizmetleri yönetmek;
  • süreçleri yönetmek;
  • İşletim sistemini kurun;
  • Yazılımı kur;
  • Sunucu rollerini ve bileşenlerini kurun;
  • Sunucu rollerini ve bileşenlerini yönetin ve yapılandırın;
  • Yönetim ve yönetimi otomatikleştirmek için komut dosyaları yazın ve kullanın;
  • Diğer sistem yöneticisi görevlerini gerçekleştirin.

Windows PowerShell, ipconfig, ping ve diğerleri gibi komut satırından çalıştırılabilen, yaygın olarak kullanılan birçok yardımcı programı ve komutu içerir. Bu, sistem yöneticilerinin komut satırından PowerShell'e geçişini kolaylaştırmak için yapılır.

Ayrıca, kolaylık olması açısından, PowerShell'de sık kullanılan birçok komut ve yardımcı programın eş anlamlıları vardır ( takma ad), örneğin, cls Clear-Host cmdlet'i ile eşanlamlıdır, dir Get-ChildItem ile eşanlamlıdır ( tam liste eş anlamlılar Get-Alias ​​cmdlet'i çalıştırılarak görüntülenebilir).

PowerShell'de istenen komutu aramayı basitleştirmek için, hem fiile hem de isme göre arama yapabileceğiniz özel bir cmdlet Get-Command vardır. Windows PowerShell'deki tüm komutlar modüller halinde gruplandırılmıştır ( ör. Hyper-V, NetTCPIP), bu da doğru komutu bulmayı kolaylaştırır.

Sonrasında istenen komut bulundu, bu komutla çalışma talimatlarını görebilirsiniz, yani. help, bu amaç için özel bir Get-Help cmdlet'i vardır, örneğin, aşağıdaki komut Get-Command cmdlet'inde yardımı görüntüler:

Yardım Al Komutu

Windows PowerShell'deki yardım kısa ve ayrıntılı olabilir ( parametre -Ayrıntılı), tamamlamak ( -Tam seçenek) ve ayrıca yalnızca örnekleri görüntüleyebilirsiniz ( parametre - Örnekler). Aşağıdaki komut yalnızca Get-Command cmdlet'ini kullanma örneklerini gösterecektir:

Yardım Al Komut Al -Örnekler

PowerShell Yardımı güncellenebilir, yani. Update-Help komutu ile güncellenebilir.

Windows PowerShell sürümleri

PowerShell 1.0'ın ilk sürümü 14 Kasım 2006'da çıktı ve aşağıdaki Windows işletim sistemleri sürümlerine yüklenebilecek ayrı bir dağıtım olarak yayınlandı: Windows XP hizmet paketi 2, Windows Server 2003 Service Pack 1 ve Windows Vista.

Windows Server 2008'de, PowerShell 1.0 da yüklenmesi gereken bir bileşen olarak gönderilmişti.

Windows 7 ve Windows Server 2008 R2'den başlayarak, PowerShell sistemin ayrılmaz bir parçası olarak gönderilir ( onlar. önceden yüklenmiş, yüklemeye gerek yok). Aşağıda, PowerShell sürümü ile Windows işletim sisteminin sürümü arasındaki yazışma tablosu bulunmaktadır ( onlar. varsayılan olarak hangi PowerShell sürümünün yüklü olduğu Windows sürümleri ):

PowerShell Sürümü Windows sürümleri
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Sunucusu 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Sunucusu 2016

PowerShell'in her yeni sürümü ile daha da güçlü araç yönetim, karşılaştırma için, ilk PowerShell'de yaklaşık 130 cmdlet vardı ve PowerShell 5.0'da zaten 600'den fazla var!

Keşfetmek şimdiki versiyonu PowerShell, $PSVersionTable yerleşik değişkeninin PSVersion özelliğini kullanabilir, örneğin aşağıdaki komutu çalıştırın:

$PSVersionTable.PSVersion

Veya cmdlet'i çalıştırın

Get-Variable -Name PSVersionTable –ValueOnly

burada, PSVersion değeri PowerShell sürümü olacaktır.

PowerShell dili

Güç kalkanı nesne yönelimli bir betik programlama dilidir. Windows işletim sisteminin tüm bileşenlerini kontrol etmek için komutlar yazmak için kullanılır. Windows kabuğu PowerShell ve Windows PowerShell Tümleşik Komut Dosyası Ortamında (ISE) yönetim görevlerini otomatikleştirmek için komut dosyaları yazmak için. PowerShell dili yönetim görevleri için oluşturulmuş olsa da, koşullar, döngüler, hata işleme, değişkenlerle çalışma, nesneler, diziler gibi her programlama dilinde mevcut olan programlama yapılarına sahip olduğundan tam teşekküllü bir betik programlama dilidir. .

PowerShell dili, komutları yazmak için birleşik bir sözdizimine ve bu komutlar için "" ilkesine göre bir adlandırma yapısına sahiptir. Fiil isim", o ne yapıyor verilen dil hem programcılar hem de sistem yöneticileri için sezgisel.

Windows PowerShell kabuğu

Windows PowerShell kabuğu PowerShell dilinde yazılmış komutlar ve betikler için bir yürütme ortamıdır. Bu kabuk, komut satırıyla aynı özelliklere sahiptir, örneğin: komut yürütme geçmişini saklama, ayarlama görünüm kabuklar, Ctrl+C tuş kombinasyonu ile komutları sonlandırma ve komut satırında olmayan daha birçok özellik, örneğin, " gibi harika bir özellik kabuk sözdizimi vurgulama» ( PowerShell 5.0'da göründü).

Bir PowerShell kabuğunu birkaç yolla başlatabilirsiniz, örneğin:

  • PowerShell yazarak komut satırından;
  • İletişim kutusu aracılığıyla Koşmak» ( klavye kısayolu Win+R), ayrıca PowerShell yazarak;
  • Windows 7'de - Başlat->Tüm Programlar ->Donatılar ->Windows PowerShell ->Windows PowerShell;
  • Windows 8.1 veya Windows Server 2012 R2'de - Başlat-> Tüm Programlar -> Sistem Araçları -> Windows PowerShell;
  • Windows 10 veya Windows Server 2016'da - Başlat->Tüm Programlar-> Windows dizini Güç kalkanı ( W grubunda) -> Windows PowerShell.

Windows Server 2016'da PowerShell çalıştırma örneği

Windows Server 2016'da PowerShell'in ekran görüntüsü

PowerShell'deki cmdlet'ler

cmdlet (cmdlet) - Bugün nasılsın pencere takımı Bunları yönetmek için işletim sistemi nesneleri ile etkileşime girebileceğiniz PowerShell. Bu komutlar, PowerShell dilinin bir parçasıdır. Cmdlet'ler " ilkesi üzerine inşa edilmiştir. Fiil isim”, tire (-) ile ayrılır; başka bir deyişle, önce ne yapacağımızı ve bir tire ile - neyin üzerinde olduğunu belirtiriz. Örneğin, Get-Help cmdlet'i, burada Get, " anlamına gelen bir fiildir. Almak" ve Yardım bir isimdir " Yardım"PowerShell bağlamında" Yardımı göster". PowerShell cmdlet'leri, komuttan temel farklardan biri olan sonuçları nesneler olarak döndürür. Windows dizeleri, burada komutlar ekrana yalnızca metin döndürür.

Veri alma (Get) için cmdlet'lere ek olarak, aşağıdaki gibi cmdlet türleri de vardır:

  • Ekle - veri ekleme;
  • Temiz temiz;
  • Etkinleştir - etkinleştir;
  • Devre dışı bırak - kapat;
  • Yeni - oluştur;
  • Kaldır - kaldır;
  • Hazır hazır;
  • Koşmaya başla;
  • Dur dur;
  • İhracat - ihracat;
  • İthalat - İthalat;
  • Ve daha fazlası.

Windows PowerShell'deki cmdlet'lerin tam listesi, özel Get-Command cmdlet'i kullanılarak görüntülenebilir. Örneğin -CommandType cmdlet parametresi ile çalıştırın, sonuç olarak ekranda cmdlet'lerin bir listesini göreceksiniz.

Get-Command -CommandType cmdlet'i

Zaten anladığınız gibi, cmdlet'ler cmdlet'in eylemlerini belirleyebileceğimiz parametrelere sahiptir. Gerekli ve isteğe bağlı parametreler vardır, örneğin Get-Command cmdlet'inde gerekli parametreler yoktur.

Aşağıdaki resim, fiil ile bir cmdlet aramanın bir yolunu göstermektedir ( fiil parametresi). İÇİNDE bu durum bir şeyi yeniden başlatabilecek bir cmdlet listesi görüntüledik.

Emretmek

Get-Command -Fiil Yeniden Başlatma

Bir cmdlet'i isme göre aramak için Noun parametresini kullanmanız gerekir. Örneğin, aşağıda hizmetlerle çalışan cmdlet'lerin bir listesini aldık.

Emretmek

Get-Command -İsim Hizmeti

İstediğiniz cmdlet'i bulamadıysanız, Ad Soyad maskeyi *Metin* biçiminde kullanabilirsiniz.

PowerShell'de işlem hattı

ana biri pencere özellikleri PowerShell, komutları yürütürken bir işlem hattı kullanma yeteneğidir.

konveyör- bu, cmdlet'in çalışmasının sonucunun dikey çubuk (|) üzerinden başka bir cmdlet'e aktarılmasıdır. Aynı zamanda, hatırladığınız gibi, PowerShell'deki cmdlet'ler sırasıyla nesneler ve dönüş nesneleri ile çalışır, nesneler de boru hattı boyunca aktarılır.

Bir işlem hattı kullanarak, karmaşık algoritmalar ve komut dosyaları yazmaya gerek kalmadan karmaşık görevleri basit ve kullanışlı bir şekilde gerçekleştirebilirsiniz.

Örneğin, C:\Windows\System32 dizinindeki en büyük dosyanın adını bulalım ( basit boru hattı örneği).

Emretmek

Get-ChildItem -Path "C:\Windows\System32" -Dosya | Sıralama-Nesne uzunluğu -Azalan | Select-Object -İlk 1

  • Get-ChildItem - belirtilen dizindeki nesneleri almak için cmdlet;
  • Sort-Object, nesneleri sıralamak için bir cmdlet'tir, bizim durumumuzda dosya boyutuna göre sıralarız ( uzunluk -Azalan);
  • Select-Object, bir nesnenin istenen özelliklerini seçmek için bir cmdlet'tir, bizim durumumuzda standart alanları ve yalnızca ilk nesneyi, yani. büyük dosya ( parametre -İlk 1).

Tüm cmdlet'ler birbirinden dikey bir çubukla ayrılır. Her cmdlet'in sonucu başka bir cmdlet'e girdi olarak iletilir, yani. önce belirtilen dizindeki tüm nesneleri alırız, ardından sonucu sıralarız ve son olarak ilk nesneyi seçeriz.

İşlerin arka planda yürütülmesi

Windows PowerShell, işleri arka planda çalıştırma yeteneğine sahiptir, bu, bir komut çalıştırabileceğiniz bir mekanizmadır ( örneğin, tamamlanması uzun zaman alan) içinde arka fon, yani başladıktan sonra geri dönersin geçerli oturum ve komutun tamamlanmasını beklemeden çalışmaya devam edebilirsiniz. Bu fırsatÇalışması yeterli olan bir komutu çalıştırmanız gerektiğinde buna ihtiyacınız olacak. uzun zaman ve bildiğiniz gibi, bu süre zarfında, komut tamamlanana kadar PowerShell kabuk oturumu engellenir ve çalışmaya devam etmeniz gerekir.

Arka planda çalışan tüm görevleri yönetebilirsiniz, örneğin görevler listesini görüntüleyebilir, görevi durdurabilir, görevi silebilir ve elbette görevin sonucunu görüntüleyebilirsiniz.

Windows PowerShell, arka plan işleriyle çalışmak için aşağıdaki cmdlet'leri sağlar:

  • İşe Başla - bir arka plan görevi başlatın;
  • Stop-Job - bir arka plan görevini durdur
  • Get-Job - arka plan görevlerinin bir listesini görüntüleyin;
  • Alma-İş - arka plan görevinin sonucunu görüntüleyin;
  • İşi Kaldır - bir arka plan görevini kaldırın;
  • Bekle-İş - bitmesini beklemek için bir arka plan görevini ön plana getirin.

Arka planda çalıştırmak için Start-Job komutunu yazmanız gerekir ve kıvırcık parantezler() arka planda yürütülecek komut veya komutlar dizisi.

Örneğin, bir görev çalıştıralım ( hizmetlerin listesini göster) arka planda, ardından arka plandaki işler listesine bakın ve işimizin sonucunu görüntüleyin ( onlar. hizmet listesi).

Arka planda bir görev çalıştırma

İşe Başla (Hizmet Al)

Arka planda çalışan görevlerin listesine bakıyoruz

İşin sonucunun görüntülenmesi Job1

İş İşini Al1

Gördüğünüz gibi, statüsüne sahip bir görevimiz var " Tamamlanmış”, yani zaten tamamlandı sadece Get-Service hızlı çalışıyor).

Arka plan görevinin sonucunu görüntülemek için, ör. Get-Service cmdlet'i, Receive-Job komutunu çalıştırdık ve işin adını ona ilettik ( can ve id değeri). Sonuç olarak, hizmetlerin bir listesini görüntüledik.

PowerShell ile uzaktan kontrol

Windows PowerShell, yalnızca yerel kullanım için değil, aynı zamanda uzaktan komut yürütme için de tasarlanmıştır. Bu özellik, uzaktaki bilgisayarları iş yerinizden yönetebilmeniz için gereklidir, yani. PowerShell komutlarını çalıştırın.

Uzaktan kumandanın birkaç yolu vardır:

  • parametreyi kullanma -Bilgisayar adı (birçok takım var). Başka bir deyişle, komutu çalıştırmak istediğiniz bilgisayarın adını parametre olarak iletirsiniz. Yöntemin dezavantajı, tek bir komutun yürütülmesiyle sınırlı olmasıdır;
  • Seanslar aracılığıyla. cmdlet Enter-PSSession (etkileşimli oturum). Bu şekilde, uzak bir bilgisayara bağlanırsınız ve PowerShell kabuğuna yazdığınız tüm komutlar, doğrudan uzak bilgisayara komut yazdığınız gibi uzak bilgisayarda yürütülür. Yöntem ayrıca, oturumun bir bilgisayarla sınırlı olması dezavantajına sahiptir;
  • cmdlet'i kullanma Invoke-Komut. Üzerinden Bu method komutları veya komut dosyalarını bir veya birkaç bilgisayarda çalıştırabilirsiniz.

Örneğin, uzak bir bilgisayara bağlanmak için ( aşağıdaki örnekte SunucuAdı) etkileşimli oturum, aşağıdaki komutu çalıştırın:

Enter-PSSession SunucuAdı

Windows PowerShell'de Komut Dosyaları, İşlevler ve Modüller

Bir algoritma yazdıysanız, büyük olasılıkla gelecekte kullanmak için kaydetmek isteyeceksiniz. Windows PowerShell'in bu amaç için bir komut dosyası oluşturma mekanizması vardır.

Bu mekanizmanın özü aşağıdaki gibidir, ihtiyacınız olan komut setini yazar ve bir komut dosyası olarak kaydedersiniz - bu .PS1 uzantılı basit bir metin dosyasıdır.

Ardından, bu betiği çalıştırmak için onu PowerShell'de çalıştırmanız yeterlidir. Bu durumda, komut dosyasının tam yolunu belirtmeniz veya komut dosyasının bulunduğu dizine gitmeniz ve adıyla çağırmanız gerekir.

Önemli!

Varsayılan olarak, Windows'ta komut dosyası oluşturma devre dışıdır! Komut dosyası yürütme ilkesini görüntülemek için cmdlet'i çalıştırın Get-ExecutionPolicy. Sonuç olarak, mevcut politikayı döndürür, örneğin:

  • Kısıtlı - herhangi bir komut dosyasının yürütülmesini engelleme ( varsayılan değer);
  • AllSigned - dijital imzaya sahip komut dosyalarının yürütülmesine izin verilir;
  • RemoteSigned - yerel komut dosyalarının yürütülmesine izin verilir, indirilen tüm komut dosyaları dijital olarak imzalanmalıdır;
  • Sınırsız - herhangi bir komut dosyasının yürütülmesine izin verilir ( güvensiz olarak önerilmez!).

Komut dosyalarının çalışmasına izin vermek için cmdlet'i kullanmanız gerekir. Set-ExecutionPolicy Yukarıdaki seçeneklerden biri ile.

Örneğin, yerel komut dosyalarının yürütülmesine izin vermek için aşağıdaki komutu çalıştırın ve Y tuşuna basarak değişiklikleri kabul edin.

Set-ExecutionPolicy RemoteSigned

Bir komut dosyasında parametreleri iletebilir, gerekli hale getirebilir veya varsayılan bir değer belirleyebilirsiniz.

Windows PowerShell, yerleşik cmdlet'ler gibi PowerShell kabuğunda kullanılabilen kendi işlevlerinizi oluşturmak için bir mekanizma sağlar.

Bunu yapmak için belirtmeniz gerekir anahtar kelimeİşlev ve ardından küme parantezleri () içinde bu işlev için algoritmayı yazın, yani. komut seti ( örneğin, yaygın olarak kullanılan bazı prosedürler: ile bir kullanıcı oluşturun belirli haklar, belirli dizinleri temizle vb.). O zaman tüm bunları bir komut dosyasına kaydetmeniz gerekir, ancak bu dosya zaten bir modül olacağından yalnızca .psm1 uzantısıyla.

Hepsi bu kadar değil, bu dosyanın PowerShell'in modülleri aradığı dizine yerleştirilmesi gerekiyor. Birkaç dizin var kullanıcı profilindeki özel bir dizin, PowerShell'in kurulu olduğu dizin), içinde görüntülenebilirler. Ortam Değişkenleri Güç kalkanı. Bunu yapmak için aşağıdaki komutu çalıştırın

Get-ChildItem Env:\PSModulePath | Format-Tablo -AutoSize

Yazmış olduğunuz modülü özel bir dizine yerleştirdikten sonra normal PowerShell komutları gibi fonksiyonlarınıza erişebilirsiniz.

Windows PowerShell Tümleşik Komut Dosyası Ortamı (ISE)

Komut dosyaları, işlevler ve buna bağlı olarak modüller yazmayı kolaylaştırmak için Microsoft, özel bir grafik programı Entegre Komut Dosyası Ortamı(ISE) - Entegre Komut Dosyası Ortamı. Bu programda çalışmak çok uygundur, ayrıca güçlü işlevselliğe sahiptir ( komut dosyaları, çıktı alanı, yerleşik hata ayıklayıcı ve daha fazlasıyla birçok sekme oluşturma).

Bunu şu şekilde çalıştırabilirsiniz:

  • Windows 7'de - Başlat->Tüm Programlar ->Donatılar ->Windows PowerShell ->Windows PowerShell ISE;
  • Windows 10 veya Windows Server 2016'da - Başlat->Tüm Programlar -> Windows PowerShell Dizini ( W grubunda) -> Windows PowerShell ISE.

Not! ISE, Sunucu Çekirdeği varyantında kurulu bir Windows Server sisteminde çalışmayacaktır.

Windows Server 2016'da PowerShell Tümleşik Komut Dosyası Ortamının (ISE) ekran görüntüsü

Sahip olduğum tek şey bu, umarım materyal sizin için yararlı olmuştur! İyi şanlar!

Yönetimde her zaman yaratıcılığa yer vardır. biraz otomasyon yapmak istiyorum rutin görev? Lütfen! Aktivite için düzenli olarak kontrol etmeniz gerekiyor mu? Sorun yok! Devasa bir raporu işlemek ve yalnızca ilgili verileri görüntülemek istiyor musunuz? Bu da mümkün. Tüm bu görevler ve daha fazlası, en iyi şekilde komut dosyalarıyla yapılır ve PowerShell, Windows'ta en iyi seçimdir.

PowerShell nedir ve neden iyidir?

UNIX ve Linux kullanıcıları ve hatta bir noktada macOS bile, Bash'in her zaman elinizin altında olduğu gerçeğine alıştı - biraz eski moda, ancak evrensel ve güçlü çare, bununla sadece birkaç satırla harika şeyler yapabilirsiniz. Cron'da yeni bir komut dosyası yazıyorsunuz - ve bitirdiniz, zaten bilgisayarınızda veya sunucuda çalışıyor ve sessizce yararlı bir şey yapıyor.

Windows'a geri dönersek (ve bazen onsuz yapamazsınız), .bat komut dosyalarının iyi olmasına rağmen her zaman kaydetmediklerini anlarsınız: yetenekleri çok sınırlıdır. Ve hala PowerShell'in orada bir şey yükseltmeniz ve yapılandırmanız gereken bilinmeyen bir mekanizma olduğunu düşünüyorsanız, sonuçlara acele etmeyin - eğer bakarsanız, hiç de fena değil.

Windows PowerShell, bir kabuk (komut satırı) ve bir komut dosyası dilinden oluşan, genişletilebilir bir açık kaynaklı otomasyon aracıdır. İlk olarak 2003'te gösterildi (daha sonra Monad olarak adlandırıldı). PowerShell 2.0, Windows 7 ve Windows Server 2008 R2 ile piyasaya sürüldü ve o zamandan beri Windows'ta. standart bileşen. Hatta Windows XP SP3'e dahil edildi. PowerShell, .NET Framework üzerine kuruludur ve onunla entegredir. PowerShell, COM, WMI ve ADSI'ye erişebilir ve elbette konsol komutlarını yürütür.

Genel olarak, "poshik" ile güçlü bağları vardır. Microsoft ürünleri, ikisinden biri Aktif Dizin veya posta sunucusu Değiş tokuş. Bu, sunucu ek bileşenine bağlanmadan konsol üzerinden bunlara erişmenize ve komutlar vermenize olanak tanır.

Daha önce PowerShell ile ilgilenmediyseniz, büyük olasılıkla ikinci sürüme sahipsiniz. En azından üçüncü sürüme yükseltmenizi öneririm - çok daha fazla özellik içerir ve faydalı cips. Ayrıntılara girmezseniz, PowerShell 2.0 yaklaşık bir düzine modül ve yaklaşık 350 komut içerir ve PowerShell 3.0 zaten 70'den fazla modülden yaklaşık 2300 cmdlet'e sahiptir. "Hacker", Windows 10'daki en yeni PowerShell sürüm 5'in nasıl farklı olduğunu da yazdı.

Bir geliştirme ortamı ve araçları seçme

Şimdi kod yazmanın en uygun olduğu yeri bulalım. Elbette, Not Defteri, Not Defteri ++ veya Sublime'da yapabilirsiniz. Ancak bu durumda, bu editörün en yetkin seçimi değildir. PowerShell'i kullanmaya başlamanın en iyi yolu, paketlenmiş .


Bu bir editör bile değil, neredeyse eksiksiz bir geliştirme ortamı. Cmdlet'lerin bir listesini ve bunların parametrelerini, değişkenlerini, yardımcı programlarını ve daha fazlasını görüntülemenize olanak tanıyan bir IntelliSense özelliği vardır. Parçacıklar desteklenir, çeşitli eklentiler aracılığıyla işlev kümesini genişletmek mümkündür. Komutlar penceresi de çok kullanışlıdır. İçinde görsel modda komutlar oluşturabilirsiniz: bir modül seçin, istediğiniz cmdlet'i bulun ve ayarlayın. gerekli parametreler. Ortaya çıkan komut konsola kopyalanabilir veya yürütme için hemen çalıştırılabilir. Genel olarak, yönetici için bir tür kurucu. Ve elbette, sözdizimi vurgulama, hata ayıklayıcı ve çok daha fazlası var.

Ancak, PowerShell ISE ayrıca değerli rakipler. Onlardan biri - .

PowerGUI, PowerShell'in görsel bir uzantısıdır. Gerekli cmdlet'leri seçmeden önce kendi betiklerinizi oluşturmayı kolaylaştırır. Sorunu çözmek için ihtiyacınız olanı alırsınız ve bir komut dosyası elde edene kadar kodun bölümlerini sürükleyip bırakırsınız. PowerGUI'nin temel özelliklerinden biri, kullanıcı topluluğu tarafından yayınlanan ve halka sunulan hazır komut dosyaları olan Power Pack'lerdir. Kullanıcı ekleme gibi basit komutlar olduğu gibi, anahtarları ve sanal makineleri yönetme gibi karmaşık komutlar da vardır. Hepsinin ihtiyaca göre eklenmesi ve değiştirilmesi kolaydır.


Sapien, çok sayıda katılımcı tarafından bir projenin ortak geliştirilmesi için tasarlanmış daha gelişmiş bir ortamdır. Eğer hiç uğraştıysanız görsel stüdyo o zaman benzerlikleri görebileceğinizi düşünüyorum. PowerShell Studio'nun kullanışlı özellikleri arasında Şerit paneli, uzaktan hata ayıklama desteği ve komut dosyalarını eklemenize izin veren derleyici özellikleri yer alır. yürütülebilir dosyalar. PowerShell'in farklı sürümleri için destek vardır.


Bahsetmeye değer, Windows PowerShell ISE için Komut Dosyası Tarayıcısıdır. Bu bir geliştirme ortamı değil, çok ilginç araç, Microsoft tarafından geliştirilmiştir. Komut Dosyası Tarayıcı, veritabanına erişimi açar hazır betikler, kendi kodunuzu yazmak için örnek olarak kullanabilirsiniz. Ve bu şey ayrıca yazdığınız kodu analiz edebilir ve onu nasıl geliştirebileceğinizi önerebilir.


Birkaç faydalı hile

Editörle ilgilendikten sonra kod yazmaya başlayabilirsiniz. PowerShell basit bir dildir ve neyin ne olduğunu çabucak anlayacağınızı düşünüyorum. Buradaki komutlara cmdlet adı verilir ve her biri iki kısımdan oluşur. Önce Get, Set, Add, Invoke, Remove gibi eylemler gelir. Ardından, eylemin neyi hedeflediğini gösterir: Service, VM, AzureAccount, DHCPServerSetting. Her parça diğerinden bir tire ile ayrılır. Örneğin, alma süreci ortaya çıkıyor. Bu arada, faydalı komut, süreçlerin bir listesini görüntüler. yazsak diyelim

alma işlemi BadTh *

şöyle bir şey göreceğiz:

NPM (K ) PM (K ) WS (K ) VM (M ) CPU (lar ) Id İşlemAdı Kolları

------------------------

28 4 - 210844 - 201128 - 163 25,67 2792 Kötü Konu

Artık askıda kalan süreci sonlandırabilirsiniz:

Biraz daha karmaşık bir mantıkla olsa da, yinelemeli olarak görüntüleyebilirsiniz:

sen de yapabilirsin

Bu arada, hesap veya bilgisayar seçenek kutusundaki her alana erişilebilir ve veriler okunabilir. Bu şekilde bütün kesimler yapabilirsiniz. Örneğin, telefon numaralarıyla ilgili verilere dayalı bir sorgu:

Al - AdUser - Filtre * - Özellikler OfficePhone | FT OfficeTelefon , KullanıcıAdı

PowerShell'e karşı yarasa

Bazen bir görev hem eski moda yöntemle hem de PowerShell yardımıyla çözülebilir. Tembel olmamanızı ve PS kullanmanızı tavsiye ederim, çünkü bu şekilde daha hızlı öğreneceksiniz ve daha fazla uygulayabileceksiniz. zor durumlar. Ek olarak, sözdizimini yavaş yavaş takdir edeceksiniz - daha zarif ve tutarlı. Aşağıda, işlerin daha önce nasıl yapıldığına ve PowerShell ile nasıl yapılabileceğine dair bazı örnekler verilmiştir.

Aşağıdaki komut satırı bilgisayarı on saniyelik bir gecikmeyle yeniden başlatacaktır:

Bat kullanarak dnscache hizmetini (veya başka herhangi bir hizmeti) şu şekilde yeniden başlatabilirsiniz:

sc dnscache'yi durdur

sc dnscache'i başlat

1. Senaryo yazmak

Bir PowerShell betiği (hangi sürüm olursa olsun), *.ps1 uzantılı bir metin dosyasıdır.

İşte basit bir Power Shell betiğinin bir örneği (dosya systemInfo.ps1 ):

# İşletim sistemi için WMI nesnesini al

Get-WmiObject Win32_OperatingSystem

Bu dosya, örneğin şurada oluşturulabilir ve düzenlenebilir: FAR Müdürü.

Notbu FAR Yöneticisi, Power Shell konsolunda çalışabilmesine rağmen, normal bir Windows konsolu ortamında komut dosyalarını kendi altında yürütür. cmd . Yani, FAR Manager yalnızca PowerShell betikleri oluşturmak ve düzenlemek için kullanılabilir, ancak çalıştırmak için kullanılamaz. Ancak hüsrana uğramadan önce 3. maddeyi okuyun.

2. Komut dosyasını çalıştırın

Komut dosyası, normal konsoldan değil, Power Shell konsolundan çalıştırılmalıdır. Windows konsolları. Power Shell konsolunda, betiğin bulunduğu dizine gitmeniz gerekir (komutları kullanarak CD ) ve ardından betiğin kendisini çalıştırın, ondan önce karakterleri yazdığınızdan emin olun.".\" . Örneğin, komut dosyasına giden yolumuz var d:\work\systemInfo.ps1 . Ardından başlatma komutları şöyle görünecektir:

CD\

cd çalışması

.\systemInfo.ps1

veya bunun gibi (sadece komut dosyasının tam yolunu belirtin):

d:\work\systemInfo.ps1

Büyük olasılıkla, komut dosyasını çalıştırdığınızda aşağıdaki hata görünecektir:

Bu sistemde komut dosyası oluşturmaya izin verilmediğinden D:\work\systemInfo.ps1 dosyası yüklenemiyor. Daha fazla bilgi için "get-help about_signing" yazın.

dize:1 karakter: 18

KategoriBilgisi: Belirtilmemiş: (:), PSSecurityException

FullyQualifiedErrorId: RuntimeException

Hata, varsayılan olarak Power Shell'in komut satırında PowerShell komutlarını yürütmenize izin veren, ancak aynı komut satırında PowerShell komutlarıyla bir komut dosyası yürütmenize izin vermeyen maksimum güvenlik ilkesinin etkinleştirilmiş olması nedeniyle ortaya çıkar. .

PowerShell komut dosyalarının yürütülmesini etkinleştirmek için, aşağıdaki içeriğe sahip bir *.bat dosyası, örneğin, enableScript.bat oluşturmanız gerekir:

powershell -Komut Kümesi-YürütmePolicy RemoteSigned

Bu *.bat dosyası herhangi bir konsolda yürütülebilir: PowerShell'de bile, normal cmd . Bu dosyayı yürüttükten sonra PowerShell komut dosyaları PowerShell konsolunda çalışmaya başlayacaktır.

3. Normal bir Windows cmd konsolundan bir PowerShell betiği çalıştırma

Normal bir Windows konsolundan bir PowerShell betiği de çalıştırabilirsiniz. Bunu yapmak için şu komutu kullanabilirsiniz:

Powershell -File ./systemInfo.ps1

Böylece, komut dosyalarını doğrudan FAR Manager'dan çalıştırabilirsiniz ve çalışacaktır.

Ama burada hafif bir incelik var. Parametre-Dosya yol göreceli olsa bile yalnızca yerel yollarda tetiklenir"./" . Yani *.ps1 ise - dosya yerel sürücüde C: veya D: , o zaman bu çağrı işe yarayacaktır. Ancak bir etki alanı kaynağında bulunan bir komut dosyasını çalıştırmayı denerseniz, komut dosyası bulunmayacaktır. Belki de bu, PowerShell'in gelecekteki sürümlerinde düzeltilecektir.

Bunun oldukça basit olduğunu zaten gördük ve etkili araç günlük görevleri gerçekleştirmek için. Bununla birlikte, birkaç örnek ve yüzeysel çalışmadan PowerShell'in gerçek yeteneklerini anlamak kategorik olarak imkansızdır, çünkü daha önce belirli bir an zoraki bir hafiflik duygusuyla baş başa kalmıyorsunuz. Peki PowerShell önemli mi? Windows aracı Yoksa bir geek oyuncağı mı? Anlayalım.

Kısa bilgi

PowerShell resmi olarak 2006'da piyasaya sürüldü ve son derece sınırlı komut yorumlayıcısının yerini alması amaçlandı. cmd çizgileri. Bu, 8 yıl önce piyasaya sürülen ikinci değiştirme girişimiydi, Windows Komut Dosyası Ana Bilgisayarı, yerleşik belgelerin eksikliği ve kabuk entegrasyonu eksikliği nedeniyle başarısız oldu.

Eh, PowerShell seleflerinin hatalarının çoğunu dikkate aldı, sunum anından 3 yıl sonra düzgün bir görünüme kavuştu ve sonuç olarak sistem yöneticileri ordusunun karşısına çok hoş bir şekilde çıktı.

İşlem hattındaki cmdlet'ler

PowerShell, cmdlet'leri temel alır. En azından biraz İngilizce biliyorsanız, "cmdlet" adının anlamlı "cmdlet" ten geldiğini zaten anlamışsınızdır. Yapıları gerçek komutu (fiil) ve nesneyi (isim) içerir. Örneğin: Get-Process, Sort-Object, Rename-Item vb. Ayırma, gördüğünüz gibi "-" işareti ile gerçekleştirilir. Var sınırlı liste Varsayılan olarak sistem tarafından kullanılan cmdlet'ler, ancak PowerShell 2.0 ile başlayarak kendi cmdlet'lerinizi oluşturabilirsiniz. Bu prosedür hakkında daha fazla bilgiyi adresinde bulabilirsiniz. resmi sayfa Microsoft. Bu arada, şimdiki versiyonu 5.1, geçen yıl Ağustos ayında piyasaya sürüldü.

PowerShell'deki diğer bir temel kavram, Pipeline'dır. İşlem hattı, bir cmdlet'in çıktısını bir sonrakinin girdisi olarak geçirme prosedürüdür. Belirlenmiş konveyör "|" , ancak pratikte böyle bir kayıt son derece basit görünüyor:

GetProcess | CM'yi sırala

Girişten de görebileceğiniz gibi, her satırın sonundaki koda ";" koyun. gerekli değildir, ancak bu işaret cmdlet'leri ayırmak için kullanılabilir:

GetProcess; Yardım almak

Her şey rahat ve güzel.

Eh, PowerShell'deki ana şey elbette komut dosyalarıdır. Burada, kendine saygı duyan herhangi bir üst düzey dilde olduğu gibi, değişkenler, işlevler, koşullu ifadeler, döngüler, istisnalar vb. İle çalışmak mümkündür. Genel olarak, önemli kısıtlamalar işlevsellikte hissetmeyeceksiniz.

Kolaylık ve hız

Elbette müşterilerinin ihtiyaçlarını karşılamak ve hayatlarını son derece kolay hale getirmek isteyen devasa Microsoft ekibi, programlamadan uzak bir kişi için bile kullanışlı ve anlaşılır bir ürün ortaya çıkardı. Bir an için bir ofiste sistem yöneticisi olduğunuzu hayal edin. Çalışanların işyerinde saçma sapan şeyler yapıp yapmadığını kontrol etmeniz gerekir. Bunu yapmanın en kolay yolu, bilgisayardaki "yanlış" işlemi aktif dizinde bulup bitirmektir:

$proc = "Yanlış_Proc"
$strCategory = "bilgisayar"
$objDomain = Yeni Nesne System.DirectoryServices.DirectoryEntry
$objSearcher = Yeni Nesne System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = ("(objectCategory=$strCategory)")
$colProplist = "isim"
foreach ($colPropList'te $i)($objSearcher.PropertiesToLoad.Add($i))
$colResults = $objSearcher.FindAll()

Foreach($colResults içinde $objResults)
{
$objBilgisayar = $objResult.Properties
$nesneBilgisayar.name
if (Test-Bağlantı -Sayı 2 -BilgisayarAdı $nesneBilgisayar.adı -Sessiz)
{
$ps = Get-WmiObject Win32_Process -Filter "Ad="$proc"" -BilgisayarAdı $objBilgisayar.adı

Foreach($ps cinsinden $i)
{
$sonuç = $i.Sonlandır()
if ($result.ReturnValue -eq 0) ("Success $comp")
else("Hata $comp")
}
}
}

Wromg_Proc - aranan işlemin adı, örneğin wmplayer.exe. Komut dosyasının ilk bölümü bilgisayarımızı bulmaya adanmıştır, ikincisi AD'de, ikincisi aslında süreçle çalışıyor. Görsel olarak böyle bir kaydın yeni başlayanları itmesine rağmen, aslında İngilizce bilgisi ile kodu kolayca deşifre edebilirsiniz.

Ancak kolaylık sağlamak için, uzun zamandır alışılmış olduğu gibi, Microsoft hatırı sayılır bir bedel ödemek zorunda kaldı. Gerekli fedakarlıklar arasında, yeni başlayanların daha deneyimli meslektaşlarının kodunu özgürce okumasına izin vermeyen basitleştirmelere sahip "yürüme" sözdizimi ve kaynak kodu da dahil olmak üzere tasarımda haksız özgürlükler bulunmaktadır. Ancak feda edilmesi gereken asıl şey hızdır. PowerShell'de yürütülen kod, bash'ın Linux eşdeğerinden birkaç kat daha yavaş olabilir. Ve sadece arabanızla çalışırken bu çok belirgin değilse, o zaman onlarca ve yüzlerce servis yaparken uzak bilgisayarlar onlarca dakika yerine saatler harcarsınız.

Bibliyografya ile tamamlayın

Bu çalışma sonucunda PowerShell ile ilgilenip ilgilenmediğinizi bilmiyorum, ancak eğer öyleyse, o zaman bilgilerin geri kalanını bulmak sizin için zor olmayacaktır. Diğer birçok dilden farklı olarak, İnternet'in Rusça bölümünde, herhangi bir beceri seviyesindeki insanlar için PowerShell hakkında birçok kaliteli bilgi bulunmaktadır.

Bugünlerde hemen hemen tüm yöneticiler Windows PowerShell'e aşinadır. Birçoğu onu indirdi, denedi ve bazen cmd.exe aracılığıyla Windows komut kabuğunda gerçekleştirilen standart dışı görevleri çözdü. Ancak PowerShell, DOS benzeri bir komut kabuğundan çok daha fazlasıdır. üzerine inşa edilmiş bir komut satırı ve komut dosyası ortamıdır. Microsoft tabanlı.NET Common Language Runtime (CLR) ve .NET Framework. PowerShell'de .NET nesneleri ile çalışırsınız. Gördüğünüz klasör yapıları veya eriştiğiniz hizmetler, esasen bu klasörleri ve hizmetleri temsil eden nesnelerin örnekleridir; bu, söz konusu ürün ile yalnızca metinleri işleyebilen diğer komut kabukları arasındaki farktır. Bu nedenle PowerShell, geleneksel komut kabuklarından çok daha güçlü ve verimlidir.

Okuyucuların tam olarak yararlanmasına yardımcı olmak için bu araç, nasıl çözüleceğini açıklayan bir dizi makale hazırladım çeşitli görevler itibaren Güç kalkanı. İlk "derste" PowerShell'i kullanmaya nasıl başlayacağınız ve nasıl performans göstereceğinizden bahsedeceğim. temel komutlar. Bu komutları oluştururken PowerShell'de nasıl yardım alınacağını ve komutlarda takma adların nasıl kullanılacağını da açıklayacağım.

İlk adım

PowerShell şu anda Windows ile birlikte gelmiyor, ancak bu Windows Server 2008 ile değişecek. PowerShell'i indirebileceğiniz kaynaklara bağlantılar ve kabukla ilgili bilgiler Windows PowerShell Web sayfasında (www.microsoft.com/powershell) bulunur. PowerShell'i indirebilmeniz için önce sisteminizde .NET Framework 2.0'ın kurulu olması gerekir. PowerShell yükleme işlemi hızlı ve kolaydır. Yalnızca, yüklediğiniz PowerShell sürümünün işletim sisteminizle uyumlu olduğundan emin olmanız gerekir. Microsoft, Windows Server 2008 beta 3, Windows Vista, Windows XP SP2 ve Windows Server 2003 için sürümler yayınlar. Bu makale için PowerShell'in Windows XP sürümünü kullandım.

PowerShell kurulumu tamamlandıktan sonra hemen başlayabilirsiniz. PowerShell'i çalıştırmak için başlangıç ​​menüsü Tüm Programlar'ı seçmeniz ve ardından Windows PowerShell 1.0 ve Windows PowerShell'i seçmeniz gerekir. Komut isteminde PowerShell penceresi göründüğünde, geçerli çalışma klasörü(benim sistemimde bu C dizinidir). Artık PowerShell komutlarını yazmaya ve yürütmeye başlayabilirsiniz.

Ekiplerle çalışmak

PowerShell geliştiricileri, bu kabuğu .NET Framework standardına göre oluşturulmuş özel bir betik diliyle donattı. PowerShell komutu, cmdlet, bir klasörün içeriğini alma veya bir kayıt defteri girdisini güncelleme gibi belirli bir görevi gerçekleştirmesi bakımından bir işleve benzer.

PowerShell kabuğunda yerleşik 100'den fazla komut vardır. Yaratabilir ek komutlar, ancak aşağıdaki gibi bir .NET standart dili kullanmalısınız. Visual Basic.NET veya C#. PowerShell makaleleri yalnızca yerleşik komutları kapsayacaktır. Her komut seçeneği bir fiil-isim birleşimidir; Bunun nedeni, Microsoft'un PowerShell'i öğrenmeyi ve genişletmeyi kolaylaştırmak için tutarlı bir adlandırma şeması kullanmak istemesidir. Fiil, gerçekleştirilecek eylemi belirtir ve isim, eylemin yönlendirileceği nesnenin türünü belirtir. Örneğin, Get-ChildItem komutu, kayıt defteri gibi geçerli çalışma dizini veya kapsayıcıdaki öğelerin listesini okur. Bir komutu yürütmek için komut satırına girmeniz gerekir. PowerShell hattı ve enter tuşuna basın. Sonuçlar komut satırının altında görüntülenir. Temel komutların yürütülmesi hakkında bilmeniz gereken tek şey bu.

Muhtemelen, gerçekleştirilecek görevi çözmek için bir komutun olup olmadığı her zaman bilinmemektedir ve bazen belirli bir komutun adını hafızada tutmak zordur. Get-Command komutu çalıştırılarak tüm komutların bir listesi görüntülenebilir. Ekran 1, bu listenin bir kısmını gösterir; orada komut adlarını ve sözdizimini görebilirsiniz, ancak karşılık gelen komutun tam olarak ne yaptığının bir açıklamasını göremezsiniz. Bu bilgiyi almak için Get-Help komutunu kullanabilirsiniz.

Yardım alma komutları

PowerShell, kullanıcının Get-Help komutunu kullanarak doğrudan PowerShell komut penceresinden erişebileceği bir dizi yardım dosyasıyla birlikte gelir. Belirli bir komut hakkında yardım bilgisi almak için -name parametresiyle Get-Help komutunu kullanın. Bu parametreden sonra bilgi almak istediğiniz komutun adı gelir. Cmd.exe işlemci komut seçenekleri gibi, PowerShell komut seçenekleri de komutların işlerini yapmak için ihtiyaç duyduğu bilgileri sağlar. Ancak cmd.exe komut seçeneklerinin (kısa çizgi, eğik çizgi ile başlayabilir veya baştaki karakter olmadan başlayabilir) aksine, PowerShell komut seçenekleri her zaman bir kısa çizgi ile başlar ve PowerShell'in adlandırma şemasının tutarlılığını daha da doğrular.

Şimdi her şeyin nasıl çalıştığını görelim. Bir örneğe bakalım. Tipik görevlerden biri sistem yöneticisi okumaktır metin dosyaları. Get-Command komutunun sağladığı komutların listesini inceledikten sonra Get-Content komutunun bu görevi gerçekleştirebileceği sonucuna varıyorsunuz, ancak emin değilsiniz. Get-Content komutuyla ilgili yardım bilgilerini görüntülemek için aşağıdaki komutu çalıştırın:

Get-Help -name Get-İçerik

Şekil 2'de gösterildiği gibi, bu komut komutun açıklamasını ve sözdizimi bilgilerini döndürür. Komut, bu durumda sistemdeki herhangi bir dosya türüne işaret eden öğenin içeriğini döndürür. Geçmişte, bir yöneticinin toplu iş dosyalarıyla veya içindeki bir File-SystemObject ile çalışmak için For komutunu kullanması gerekebilirdi. Windows komut dosyaları Komut Dosyası Ana Bilgisayarı (WSH), ancak bir PowerShell ortamında Get-Content komutunu çalıştırmanız yeterlidir. Sözdizimi hakkında daha ayrıntılı bilgi almak için komuta -full seçeneğini eklemeniz gerekir.

Get-Help -name Get-Content -full

-full seçeneğinin karşılık gelen bir değer almadığına dikkat edin. Bu tür parametrelere, komutların davranışını değiştiriyor gibi göründükleri için anahtar parametreleri denir.

Şekil 3, bu komut tarafından döndürülen bilgilerin bir kısmını göstermektedir. Yöneticinin, tüm içeriğin görüntülenebilmesi için bilgisayarındaki pencereyi kaydırması veya yeniden boyutlandırması gerekir. PARAMETRELER bölümü, bir komuta parametreleri dahil etmek için gereken bilgileri içerir. Her parametre için iki önemli bilgi kategorisine dikkat edin: Gerekli ve Konum.

Gerekli kategorisindeki bilgiler, parametrenin gerekli mi yoksa isteğe bağlı mı olduğunu gösterir. Required değişkeni true olarak ayarlandığında, parametrenin komuta dahil edilmesi gerekir. Gerekli değişken false olarak ayarlanırsa bu parametre isteğe bağlıdır.

Konum kategorisinin değeri, parametreye bir ad verilmesi gerekip gerekmediğini veya konumuna göre başvurulabileceğini değerlendirmenize olanak tanır. Konum değişkeni adlandırılmış olarak ayarlandığında, bu parametreye başvururken adını belirtmeniz gerekir. Konum değişkeninin değeri bir sayı olarak ifade edildiğinde, parametreye adıyla atıfta bulunulabilir veya parametrenin değeri doğru konumunda verilebilir.

Örneğin, Şekil 3'te gösterildiği gibi, Get-Content komutu, -path parametresinin belirtilmesini gerektirir. Ancak bu parametrenin değeri, aşağıdaki örnekte olduğu gibi parametre adı girilmeden ilk konumda belirtilebilir:

Get-Content c:sample.txt

Parametre değeri boşluk içeriyorsa, değer tırnak içine alınmalıdır.

PARAMETRELER bölümünde, her parametre adını açılı parantez () içine alınmış bilgiler takip eder. Bu bilgi, parametre değerinin olması gereken veri tipini gösterir. Şekil 3'te gösterildiği gibi, -path parametresinin değeri bir dize olmalıdır. Bir sözcük dizisini bir köşeli ayraç () izliyorsa, bu, parametre değeri olarak bir dizi dizisinin kullanılabileceği anlamına gelir.

Değer almayan anahtar parametrelerinin kullanılması durumunda veriler okunan tipte olacaktır. Bu veri türü ile örneğin Get-Content komutunun -force parametresi tanımlanır. Bu parametre komutun yürütülmesini engelleyebilecek kısıtlamaları kaldırır. İptal, yalnızca parametre komuta dahil edildiğinde gerçekleşir.

Parametrelerle ilgili olması gereken bir diğer PowerShell işlevi, otomatik tamamlama"parametre-adı" kombinasyonunu girerek. Kullanıcının diğer parametrelerden ayırt edilebilmesi için parametre adını oluşturacak kadar harf girmesi yeterlidir. evet, takım

Get-Content c:sample.txt -force

komuta eşdeğerdir

Get-Content c:sample.txt -fo

Komutları oluşturmak için gereken parametrelerle ilgili bilgilere ek olarak, Get-Content komutunun yardım dosyası, komutun kullanımını gösteren örnekler, Notlar bölümündeki yardımcı ipuçları ve daha fazla bilgi için kaynaklar içerir. Tüm komutlar için yardım dosyalarının sağlandığını belirtmek güzel - genel kavramlar için yardım dosyaları bile var.

Kavramlarla İlgili Yardım Alma

PowerShell, çeşitli kavramlara genel bakış sağlayan bir dizi yardım dosyasıyla birlikte gelir. Her dosya "about_" karakterleriyle başlar ve bir bölüm adıyla biter. Görüntülemek için alfabetik liste komutu çalıştırma ile ilgili bölümler

Belirli bir konuyla ilgili bilgileri görüntülemek için parametre değerine eklemeniz yeterlidir. Ad Soyad temalar. Örneğin, veri akışı kontrolü ile ilgili bir dosyayı okumak için komutu çalıştırmanız gerekir.

about_flow_control Yardım Alın

Şekil 4, sonuç olarak elde edilebilecek bazı verileri göstermektedir. Gördüğümüz gibi, dosya, PowerShell betiklerinde veri akışı denetiminin uygulanmasıyla ilgili adımlara genel bir bakış içerir.

takma ad kullanma

Bazı komut adları oldukça uzun olabilir, bu da klavyeden tekrar tekrar komut yazmanız gerektiğinde can sıkıcı olabilir. Neyse ki, PowerShell geliştiricileri, komutlara atıfta bulunmak için takma adları kullanma yeteneği sağlamıştır. Takma ad, genellikle gerçek komut adından çok daha kısa olan alternatif bir addır. PowerShell, kullanıcıların kendi takma adlarını oluşturabileceklerine ek olarak bir dizi yerleşik takma ad içerir.

Mevcut oturumda bulunan takma adları görüntülemek için Get-Alias ​​​​komutunu çalıştırın. Geçerli oturum, PowerShell işlemcisine yapılan geçerli bağlantıyı ifade eder. PowerShell başladığında, kullanıcı yeni bir oturum başlatır; bu oturum, kullanıcı PowerShell'i kapatana ve bağlantıyı sonlandırana kadar devam eder. Get-Alias, tüm yerleşik takma adlara ve bunlarla ilişkili komutlara ek olarak, geçerli oturum sırasında oluşturulan tüm takma adların yanı sıra, kullanıcı tanımlı yapılandırma ayarları olan profillerde ayarlanan takma adları görüntüler. kabuk başlatılır. Aşağıdaki makalelerden birinde profillere bakacağız.

Belirli bir komutla ilişkili takma adları görmek istiyorsanız Get-Alias ​​komutunu daha kesin olarak tanımlayın. Örneğin, Get-ChildItem ile ilişkili takma adları görüntülemek için şu komutu çalıştırın:

Al-Takma Ad |
Where-Object($_.definition `
--match "Get-ChildItem")

Bu komut, sonraki derslerde ayrıntılı olarak ele alacağım birkaç öğe içerir. Şimdilik bilmeniz gereken tek şey Get-Alias ​​​​komutunun çıktısının Get-ChildItem ile eşleşmeyen sonuçları filtreleyen Where-Object komutuna yönlendirildiğidir. Başka bir komuta atanan diğer adları görmek istiyorsanız Get-ChildItem adını o komutun adıyla değiştirin.

Şekil 5'te gösterildiği gibi, PowerShell Get-ChildItem komutunu çağırmak için üç takma ad içerir, gci, ls ve dir. Komut adı yerine bunlardan herhangi biri kullanılabilir. Bu nedenle, aşağıdaki dört komutun her biri C:Windows dizininin içeriğini listeler:

Get-ChildItem c:windows
dir c: pencereler
ls c:pencereler
gci c:pencereler

Mevcut oturum içinde bir takma ad oluşturmak için Set-Alias ​​​​komutunu kullanın. Örneğin, Get-Content'e erişmek için bir takma ad cnt oluşturmak için şu komutu çalıştırın:

Set-Alias ​​​​cnt Get-Content

Bundan sonra, Get-Content komutunu çalıştırmanız gerektiğinde, cnt takma adını kullanabilirsiniz. Bu takma ad, oturum bitene kadar (yani, PowerShell kabuğu kapanana kadar) kullanılabilir. Bir takma ad tanımlarken, parametreleri dahil etme seçeneğinin olmadığını unutmayın; yalnızca komut adı kullanılabilir. Bir komuta ve onun parametrelerine bir referans tanımlamak istiyorsanız, özel bir fonksiyon oluşturmalısınız.

umutlar

İlk derste, bir veya daha fazla komuttan oluşan PowerShell komutlarını keşfetmeye ve kullanmaya başlamanız için gereken temel bileşenleri tanıttım. Gelecek makalelerde, bu komutların nasıl kullanılacağını ve ayrıca mevcut tüm komutları kullanmanıza izin veren komut dosyalarının nasıl oluşturulacağını göstereceğim. PowerShell Özellikleri. Şimdilik, komutlarla çalışmaya başlayın. Komutlar oluşturmak ve bireysel kavramları öğrenmek için PowerShell yardım dosyasını kullanın. İle deney çeşitli parametreler ve takma adların yanı sıra oluşturmayı da öğrenin. PowerShell'i günlük görevlerinizde kullanmaya hazır olmanız çok uzun sürmez.

Robert Sheldon ([e-posta korumalı]) teknik danışman ve çok sayıda teknoloji kitabının yazarıdır. Microsoft Windows ve veritabanları