PowerShell nedir?What is PowerShell?

PowerShell, bir komut satırı kabuğu ve betik dilinden oluşan platformlar arası bir görev otomasyonu ve yapılandırma yönetim çerçevesidir.PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. Büyük kabukların aksine metin kabul eden ve döndüren, PowerShell .NET ortak dil çalışma zamanının (CLR) üzerine kurulmuştur ve .NET nesnelerini kabul eder ve döndürür.Unlike most shells, which accept and return text, PowerShell is built on top of the .NET Common Language Runtime (CLR), and accepts and returns .NET objects. Bu temel değişiklik, otomasyon için tamamen yeni araçlar ve yöntemler sunar.This fundamental change brings entirely new tools and methods for automation.

Çıkış nesne tabanlıOutput is object-based

Geleneksel komut satırı arabirimlerinden farklı olarak, PowerShell cmdlet 'leri nesnelerle başa çıkmak için tasarlanmıştır.Unlike traditional command-line interfaces, PowerShell cmdlets are designed to deal with objects. Bir nesne, yalnızca ekranda görünen karakterlerin dizesinden daha fazla yapılandırılmış bir bilgi.An object is structured information that is more than just the string of characters appearing on the screen. Komut çıktısı, ihtiyaç duyduğunuzda kullanabileceğiniz ek bilgileri her zaman taşır.Command output always carries extra information that you can use if you need it.

Geçmişte verileri işlemek için metin işleme araçları kullandıysanız, PowerShell 'de kullanıldığında farklı davrandığını görürsünüz.If you've used text-processing tools to process data in the past, you'll find that they behave differently when used in PowerShell. Çoğu durumda, belirli bilgileri ayıklamak için metin işleme araçlarına gerek kalmaz.In most cases, you don't need text-processing tools to extract specific information. Standart PowerShell nesne söz dizimini kullanarak verilerin kısımlarına doğrudan erişebilirsiniz.You directly access portions of the data using standard PowerShell object syntax.

Komut ailesi GenişletilebilirThe command family is extensible

Gibi arabirimler cmd.exe , yerleşik komut kümesini doğrudan genişletebilmeniz için bir yol sağlamaz.Interfaces such as cmd.exe don't provide a way for you to directly extend the built-in command set. İçinde çalışan dış komut satırı araçları oluşturabilirsiniz cmd.exe .You can create external command-line tools that run in cmd.exe. Ancak bu dış araçların, yardım tümleştirmesi gibi hizmetleri yoktur.But these external tools don't have services, such as Help integration. cmd.exe Bu dış araçların geçerli komutlar olduğunu otomatik olarak bilmez.cmd.exe doesn't automatically know that these external tools are valid commands.

PowerShell 'deki komutları _cmdlet 'ler_olarak bilinir.The commands in PowerShell are known as cmdlets. Her bir cmdlet 'i ayrı ayrı kullanabilirsiniz, ancak bunları karmaşık görevler gerçekleştirmek üzere birleştirdiğinizde bunların gücü gerçekleştirilir.You can use each cmdlet separately, but their power is realized when you combine them to perform complex tasks. Birçok kabuklar gibi PowerShell, bilgisayardaki dosya sistemine erişmenizi sağlar.Like many shells, PowerShell gives you access to the file system on the computer. PowerShell sağlayıcıları , kayıt defteri ve sertifika depoları gibi diğer veri depolarına, dosya sistemine erişirken kolayca erişmenizi sağlar.PowerShell providers enable you to access other data stores, such as the registry and the certificate stores, as easily as you access the file system.

Derlenmiş kod veya betikleri kullanarak kendi cmdlet ve işlev modüllerinizi oluşturabilirsiniz.You can create your own cmdlet and function modules using compiled code or scripts. Modüller, kabuğa cmdlet 'ler ve sağlayıcılar ekleyebilir.Modules can add cmdlets and providers to the shell. PowerShell Ayrıca, UNIX kabuk betiklerine ve cmd.exe toplu iş dosyalarına benzer betikleri destekler.PowerShell also supports scripts that are analogous to UNIX shell scripts and cmd.exe batch files.

Komut diğer adları desteğiSupport for command aliases

PowerShell, diğer adlara göre komutlara başvurmak için diğer adları destekler.PowerShell supports aliases to refer to commands by alternate names. Diğer ad, diğer kabukların deneyimine sahip olan kullanıcıların, PowerShell 'de benzer işlemler için zaten tanıdığınız ortak komut adlarını kullanmasına olanak sağlar.Aliasing allows users with experience in other shells to use common command names that they already know for similar operations in PowerShell.

Diğer adlar yeni bir adı başka bir komutla ilişkilendirir.Aliasing associates a new name with another command. Örneğin, PowerShell 'in Clear-Host Çıkış penceresini temizleyen adlı bir iç işlevi vardır.For example, PowerShell has an internal function named Clear-Host that clears the output window. cls clear Bir komut isteminde ya da diğer adını yazabilirsiniz.You can type either the cls or clear alias at a command prompt. PowerShell bu diğer adları Yorumlar ve Clear-Host işlevi çalıştırır.PowerShell interprets these aliases and runs the Clear-Host function.

Bu özellik kullanıcıların PowerShell 'i öğrenmenize yardımcı olur.This feature helps users to learn PowerShell. Birincisi, çoğu cmd.exe ve UNIX kullanıcıları, kullanıcıların adı tarafından zaten bileen büyük bir ve daha fazla komut içeren komutları vardır.First, most cmd.exe and Unix users have a large repertoire of commands that users already know by name. PowerShell eşdeğerleri özdeş sonuçlar üretmeyebilir.The PowerShell equivalents may not produce identical results. Ancak sonuçlar, kullanıcıların PowerShell komut adını bilmeden çalışabileceği kadar yakın olur.However, the results are close enough that users can do work without knowing the PowerShell command name. Yeni bir komut kabuğu öğrenirken "Muscle Memory" başka bir önemli kaynak kaynağıdır."Muscle memory" is another major source of frustration when learning a new command shell. cmd.exeYıl boyunca kullandıysanız, cls ekranı temizlemek için komutunu yazarak resmi dahil edebilirsiniz.If you have used cmd.exe for years, you might reflexively type the cls command to clear the screen. Diğer adı olmadan Clear-Host , bir hata iletisi alırsınız ve çıktıyı temizlemek için ne yapılacağını bilemezsiniz.Without the alias for Clear-Host, you receive an error message and won't know what to do to clear the output.

PowerShell konsol girişini ve görüntülemeyi işlerPowerShell handles console input and display

Bir komut yazdığınızda, PowerShell komut satırı girişini her zaman doğrudan işler.When you type a command, PowerShell always processes the command-line input directly. PowerShell Ayrıca ekranda gördüğünüz çıktıyı da biçimlendirir.PowerShell also formats the output that you see on the screen. Her cmdlet 'in gerektirdiği işi azalttığından bu fark önemlidir.This difference is significant because it reduces the work required of each cmdlet. Her zaman her bir cmdlet ile aynı şekilde işlemler yapabilmenizi sağlar.It ensures that you can always do things the same way with any cmdlet. Cmdlet geliştiricilerinin komut satırı bağımsız değişkenlerini ayrıştırmak veya çıktıyı biçimlendirmek için kod yazması gerekmez.Cmdlet developers don't need to write code to parse the command-line arguments or format the output.

Geleneksel komut satırı araçlarının yardımı istemek ve görüntülemek için kendi şemaları vardır.Traditional command-line tools have their own schemes for requesting and displaying Help. Bazı komut satırı araçları /? , yardım görüntüsünü tetiklemek için kullanılır; diğerleri,, -? /H veya bile kullanılır // .Some command-line tools use /? to trigger the Help display; others use -?, /H, or even //. Bazıları, yardım 'ı konsol ekranı yerine GUI penceresinde görüntüler.Some will display Help in a GUI window, rather than in the console display. Yanlış parametresini kullanırsanız, araç yazdığınız şeyi yoksayabilir ve bir görevi otomatik olarak yürütmeye başlar.If you use the wrong parameter, the tool might ignore what you typed and begin executing a task automatically. PowerShell komut satırını otomatik olarak ayrıştırır ve işleyerek bu yana -? parametre her zaman "Bu komut Için yardımı göster" anlamına gelir.Since PowerShell automatically parses and processes the command line, the -? parameter always means "show me Help for this command".

Not

PowerShell 'de bir grafik uygulaması çalıştırırsanız, uygulamanın penceresi açılır.If you run a graphic application in PowerShell, the window for the application opens. PowerShell müdahale yalnızca, sağladığınız komut satırı girişini veya konsol penceresine döndürülen uygulama çıkışını işlerken.PowerShell intervenes only when processing the command-line input you supply or the application output returned to the console window. Uygulamanın dahili olarak nasıl çalıştığını etkilemez.It does not affect how the application works internally.

PowerShell 'in bir işlem hattı vardırPowerShell has a pipeline

İşlem hatları, komut satırı arabirimlerinde kullanılan en değerli kavramdır.Pipelines are arguably the most valuable concept used in command-line interfaces. Doğru şekilde kullanıldığında, işlem hatları karmaşık komutları kullanma çabaları azaltır ve iş akışını görmeyi kolaylaştırır.When used properly, pipelines reduce the effort of using complex commands and make it easier to see the flow of work. Bir işlem hattındaki her komut çıktıyı, öğe öğesini öğeye göre bir sonraki komuta geçirir.Each command in a pipeline passes its output, item by item, to the next command. Komutların tek seferde birden fazla öğeyi işlemesi gerekmez.Commands don't have to handle more than one item at a time. Sonuç, kaynak tüketimini azalmıştır ve çıktıyı hemen alabilir.The result is reduced resource consumption and the ability to get output immediately.

İşlem hatları için kullanılan gösterim, diğer kabukların kullandığı gösterimde benzerdir.The notation used for pipelines is similar to the notation used in other shells. İlk bakışta, işlem hatları PowerShell 'de farklı olduğunda görünür olmayabilir.At first glance, it may not be apparent how pipelines are different in PowerShell. Ekranda metin görseniz de, komutlar arasında metin değil, PowerShell kanallar nesneleri.Although you see text on the screen, PowerShell pipes objects, not text, between commands.

Örneğin, Out-Host cmdlet 'ini, başka bir komuttan gelen çıktının sayfa görüntüsünü zorlamak için kullanırsanız, çıktı ekranda görüntülenen normal metinle aynı şekilde görünür ve sayfalara ayrılır:For example, if you use the Out-Host cmdlet to force a page-by-page display of output from another command, the output looks just like the normal text displayed on the screen, broken up into pages:

Get-ChildItem | Out-Host -Paging
    Directory: /mnt/c/Git/PS-Docs/PowerShell-Docs/reference/7.0/Microsoft.PowerShell.Core

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          05/22/2020    08:30                About
-----          05/20/2020    14:36           9044 Add-History.md
-----          05/20/2020    14:36          12227 Clear-History.md
-----          05/20/2020    14:36           3566 Clear-Host.md
-----          05/20/2020    14:36          29087 Connect-PSSession.md
-----          05/20/2020    14:36           5705 Debug-Job.md
-----          05/20/2020    14:36           3515 Disable-ExperimentalFeature.md
-----          05/20/2020    14:36          25531 Disable-PSRemoting.md
-----          05/20/2020    14:36           7852 Disable-PSSessionConfiguration.md
-----          05/20/2020    14:36          25355 Disconnect-PSSession.md
-----          05/20/2020    14:36           3491 Enable-ExperimentalFeature.md
-----          05/20/2020    14:36          13310 Enable-PSRemoting.md
-----          05/20/2020    14:36           8401 Enable-PSSessionConfiguration.md
-----          05/20/2020    14:36           9531 Enter-PSHostProcess.md
...
<SPACE> next page; <CR> next line; Q quit

Sayfalama, Out-Host bir sayfada görüntülenmek üzere bir bütün sayfaya sahip olduğunda, cmdlet 'e aktarım IŞLERKEN CPU kullanımını da azaltır.Paging also reduces CPU utilization because processing transfers to the Out-Host cmdlet when it has a complete page ready to display. Ardışık düzen içinde bundan önce gelen cmdlet 'ler, çıktının sonraki sayfası kullanılabilir olana kadar yürütmeyi duraklatır.The cmdlets that precede it in the pipeline pause execution until the next page of output is available.

İşlem hattındaki nesnelerObjects in the pipeline

PowerShell 'de bir cmdlet çalıştırdığınızda, bir konsol penceresinde nesneleri metin olarak göstermek için gereken metin çıktısını görürsünüz.When you run a cmdlet in PowerShell, you see text output because it is necessary to represent objects as text in a console window. Metin çıktısı, çıktı olan nesnenin tüm özelliklerini görüntülemeyebilir.The text output may not display all of the properties of the object being output.

Örneğin, Get-Location cmdlet 'ini düşünün.For example, consider the Get-Location cmdlet. Metin çıktısı, tarafından döndürülen nesnenin tüm gösterimi değil, bilgilerin bir özetidir Get-Location .The text output is a summary of information, not a complete representation of the object returned by Get-Location. Çıktıdaki başlık, ekran görüntüsüne yönelik verileri biçimlendiren işlem tarafından eklenir.The heading in the output is added by the process that formats the data for onscreen display.

Get-Location
Path
----
C:\

Çıktıyı Get-Member cmdlet 'e yönelmek, tarafından döndürülen nesneyle ilgili bilgileri görüntüler Get-Location .Piping the output to the Get-Member cmdlet displays information about the object returned by Get-Location.

Get-Location | Get-Member
   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Equals       Method     bool Equals(System.Object obj)
GetHashCode  Method     int GetHashCode()
GetType      Method     type GetType()
ToString     Method     string ToString()
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   string Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property   string ProviderPath {get;}

Get-Location geçerli yolu ve diğer bilgileri içeren bir PathInfo nesnesi döndürür.Get-Location returns a PathInfo object that contains the current path and other information.

Yerleşik yardım sistemiBuilt-in help system

UNIX sayfalarına benzer şekilde man PowerShell, PowerShell kavramlarını ve komut sözdizimini açıklayan ayrıntılı yardım makalelerini içerir.Similar to Unix man pages, PowerShell includes detailed help articles that explain PowerShell concepts and command syntax. Bu makaleleri komut isteminde görüntülemek için Get-Help cmdlet 'ini kullanın veya PowerShell belgelerindeki çevrimiçi ortamda bu makalelerin en son güncelleştirilmiş sürümlerini görüntüleyin.Use the Get-Help cmdlet to display these articles at the command prompt or view the most recently updated versions of these articles in the PowerShell documentation online.

Sonraki adımlarNext steps

PowerShell hakkında daha fazla bilgi edinmek için bu sitenin öğrenme PowerShell bölümüne bakın.To learn more about PowerShell, see the Learning PowerShell section of this site.