PowerShell'i keşfedin

PowerShell bir komut satırı kabuğu ve bir komut dosyası dilidir. PowerShell, yönetim görevlerini otomatikleştirmeye yardımcı olmak için Windows'ta başlatıldı. Artık platformlar arası çalışır ve çeşitli görevler için kullanılabilir.

PowerShell'i benzersiz kılan şey, metin yerine .NET nesnelerini kabul edip döndürmesidir. Bu özellik, bir işlem hattında farklı komutların bağlanmasını kolaylaştırır.

PowerShell ne için kullanılabilir?

PowerShell'in kullanımı, yalnızca Windows olduğu günlerden bu yana artmıştır. Windows görev otomasyonu için hala kullanılır, ancak bugün aşağıdaki gibi görevler için kullanabilirsiniz:

  • Bulut yönetimi. PowerShell, bulut kaynaklarını yönetmek için kullanılabilir. Örneğin, bulut kaynakları hakkındaki bilgileri alabilir ve yeni kaynakları güncelleştirebilir veya dağıtabilirsiniz.
  • CI/CD. Sürekli Tümleştirme/Sürekli Dağıtım işlem hattının parçası olarak da kullanılabilir.
  • Active Directory ve Exchange görevlerini otomatikleştirme. Active Directory'de kullanıcı oluşturma ve Exchange'de posta kutuları gibi Windows'ta neredeyse tüm görevleri otomatikleştirmek için bunu kullanabilirsiniz.

Çok daha fazla kullanım alanı vardır, ancak önceki listede PowerShell'in çok yol kat ettiğini gösteren bir ipucu yer alır.

PowerShell'i kimler kullanır?

PowerShell, çok sayıda rolde çalışan kişilere yardımcı olabilecek güçlü bir araçtır. PowerShell, geleneksel olarak Sistem Yönetici istrator rolü tarafından kullanılmıştır ancak artık kendilerini DevOps, Cloud Ops ve hatta Geliştiriciler olarak adlandıran kişiler tarafından kullanılmaktadır.

PowerShell cmdlet'leri

PowerShell önceden yüklenmiş yüzlerce komutla birlikte gelir. PowerShell komutları cmdlet'ler olarak adlandırılır (command-lets olarak okunur).

Her cmdlet'in adı bir Fiil-İsim çifti içerir. Örneğin, Get-Process. Bu adlandırma kuralı, cmdlet'in ne yaptığının anlaşılmasını kolaylaştırır. Ayrıca aradığınız komutu bulmayı kolaylaştırır. Kullanılacak cmdlet'i ararken fiil veya isim üzerinde filtreleyebilirsiniz.

PowerShell'i keşfetmek için cmdlet'leri kullanma

PowerShell'i ilk aldığınızda, öğrenmeniz gereken çok şey olduğu için korkutucu olabilir. PowerShell, ihtiyaç duyduğunuzda bir kerede biraz öğrenmenize yardımcı olmak için tasarlanmıştır.

PowerShell, PowerShell'i keşfetmenize yardımcı olan cmdlet'ler içerir. Bu üç cmdlet'i kullanarak hangi komutların kullanılabilir olduğunu, ne yaptıklarını ve hangi türlerde çalıştıklarını keşfedebilirsiniz.

  • Get-Verb. Bu komutu çalıştırmak, çoğu komutun bağlı olduğu fiillerin listesini döndürür. Yanıt, bu fiillerin ne yaptığının açıklamasını içerir. Komutların çoğu bu adlandırma kuralını izlediğinden, bir komutun ne yaptığına ilişkin beklentileri belirler. Bu, uygun komutu seçmenize ve bir komut oluştururken ne ad verileceğine yardımcı olur.
  • Get-Command. Bu komut makinenizde yüklü olan tüm komutların listesini alır.
  • Get-Member. Nesne tabanlı çıkış üzerinde çalışır ve bir komut için hangi nesne, özellik ve yöntemlerin kullanılabilir olduğunu bulabilir.
  • Get-Help. Bu komutu bir komutun adıyla bağımsız değişken olarak çağırmak, komutun çeşitli bölümlerini açıklayan bir yardım sayfası görüntüler.

Bu komutları kullanarak PowerShell hakkında bilmeniz gereken neredeyse her şeyi keşfedebilirsiniz.

Fiil

Fiil , PowerShell'de önemli bir kavramdır. Çoğu cmdlet'in izlediği bir adlandırma standardıdır. Ayrıca kendi komutlarınızı yazarken izlemeniz beklenen bir adlandırma standardıdır. Fiil, verileri okumak veya değiştirmek gibi ne yapmaya çalıştığınızı söyler. PowerShell'in standartlaştırılmış bir fiil listesi vardır. Tüm olası fiillerin tam listesini almak için cmdlet'ini Get-Verb kullanın:

Get-Verb

Cmdlet uzun bir fiil listesi döndürür. Açıklama, fiilin ne yapması gerektiğiyle ilgili bağlam sağlar. Çıktının ilk birkaç satırı aşağıdadır:

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

Get-Command ile komutları bulma

Get-Command Cmdlet, sisteminizde yüklü olan tüm kullanılabilir komutların listesini döndürür. Geri aldığın liste oldukça büyük. Parametreleri veya yardımcı cmdlet'leri kullanarak yanıtı filtreleyerek geri gelen bilgi miktarını sınırlayabilirsiniz.

Ada göre filtrele

Çıkışını Get-Command farklı parametreler kullanarak filtreleyebilirsiniz. Filtreleme, belirli özelliklere sahip komutları bulmanıza olanak tanır. Name parametresi, belirli bir komutu ada göre bulmanızı sağlar.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

İşlemlerle çalışan tüm komutları bulmak istiyorsanız ne yapmanız gerekir? Dizenin diğer formlarını eşleştirmek için joker karakter * kullanabilirsiniz. Örneğin:

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

İsim ve Fiil üzerinde filtreleme

Fiil ve isim değerlerini filtreleyen başka parametreler de vardır. Komutun adının fiil bölümü en soldaki bölümdür. Fiil, cmdlet tarafından Get-Verb döndürülen değerlerden biri olmalıdır. Komutun en sağdaki bölümü isim bölümüdür. İsim her şey olabilir.

  • Fiili filtreleyin. komutunda Get-Processfiil bölümü şeklindedir Get. Fiil bölümünü filtrelemek için Fiil parametresini kullanın.

    Get-Command -Verb 'Get'
    

    Bu örnekte, fiilini Getkullanan tüm komutlar listelenir.

  • İsimlere göre filtreleyin. komutunda Get-Process, isim bölümü şeklindedir Process. ada göre filtrelemek için İsim parametresini kullanın. Aşağıdaki örnek, harfiyle Ubaşlayan adları olan tüm cmdlet'leri döndürür.

    Get-Command -Noun U*
    

Ayrıca, aramanızı daraltmak için parametreleri birleştirebilirsiniz, örneğin:

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

Sonuçları filtrelemek için yardımcı cmdlet'leri kullanma

Sonuçları filtrelemek için diğer cmdlet'leri de kullanabilirsiniz.

  • Select-Object. Bu çok yönlü komut, bir veya daha fazla nesneden belirli özellikleri seçmenize yardımcı olur. Geri alabileceğiniz öğe sayısını da sınırlayabilirsiniz. Aşağıdaki örnek, geçerli oturumda kullanılabilen ilk 5 komut için Ad ve Kaynak özellik değerlerini döndürür.

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    Daha fazla bilgi için bkz . Select-Object.

  • Where-Object. Bu cmdlet, döndürülen nesneleri özelliklerin değerlerine göre filtrelemenizi sağlar. komutu, bir özelliğin değerini test eden bir ifade alır. Aşağıdaki örnek ile pbaşlayan tüm işlemleri ProcessName döndürür.

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    cmdlet'i Get-Process bir işlem nesneleri koleksiyonu döndürür. Yanıtı filtrelemek için çıktıyı öğesine yöneltinWhere-Object. Piping, iki veya daha fazla komutun bir kanal | karakteri aracılığıyla bağlandığı anlamına gelir. Bir komutun çıktısı, sonraki komutun girişi olarak gönderilir. için Where-Object filtre ifadesi, harfiyle pbaşlayan işlemleri eşleştirmek için işlecini kullanır-like.

Get-Member ile nesneleri keşfetme

İstediğiniz cmdlet'i bulabildikten sonra, hangi çıkışı ürettiği hakkında daha fazla bilgi edinmek istiyorsunuz. cmdlet'i Get-Member bir nesnenin türünü, özelliklerini ve yöntemlerini görüntüler. İncelemek istediğiniz çıkışı öğesine yöneltin Get-Member.

Get-Process | Get-Member

Sonuç, döndürülen türü ve TypeName nesnenin tüm özelliklerini ve yöntemlerini görüntüler. İşte böyle bir sonucun alıntısı:

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

MemberType parametresini kullanarak döndürülen bilgileri sınırlayabilirsiniz.

Get-Process | Get-Member -MemberType Method

Varsayılan olarak PowerShell yalnızca birkaç özellik görüntüler. Önceki örnekte ve MemberTypeDefinition üyeleri görüntülenmiştirName. Görmek istediğiniz özellikleri belirtmek için kullanabilirsiniz Select-Object . Örneğin, yalnızca Name ve Definition özelliklerini görüntülemek istiyorsunuz:

Get-Process | Get-Member | Select-Object Name, Definition

Parametre türüne göre arama

Get-Memberbize İşlem türü nesnelerini döndürdüğünü Get-Processgösterdi. parametresiGet-Command, İşlem nesnelerini giriş olarak alan diğer komutları bulmak için kullanılabilir.

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

Bir komutun çıkış türünü bilmek, aramanızı ilgili komutlar için daraltmanıza yardımcı olabilir.

Ek kaynaklar