Aracılığıyla paylaş


1. Bölüm - PowerShell'i kullanmaya başlama

Bu bölüm, PowerShell'i bulup başlatmaya ve yeni kullanıcıların PowerShell ile deneyimledikleri ilk sorun noktalarını çözmeye odaklanır. Laboratuvar ortamı bilgisayarınızdaki bu bölümdeki örnekleri izleyin ve gözden geçirin.

PowerShell nedir?

Windows PowerShell, Windows tabanlı sistemlerin yönetim görevlerini otomatikleştirmek için kullanımı kolay bir komut satırı kabuğu ve komut dosyası ortamıdır. Windows PowerShell, Windows işletim sisteminin tüm modern sürümlerine önceden yüklenmiştir.

PowerShell nerede bulunur?

Windows 11'de PowerShell'i bulmanın en kolay yolu, Şekil 1-1'de gösterildiği gibi arama çubuğuna yazmaktır PowerShell . Windows PowerShell için dört farklı kısayol olduğuna dikkat edin.

Şekil 1-1 - PowerShell araması.

Windows'un 64 bit sürümünde Windows PowerShell kısayolları:

  • Windows PowerShell
  • Windows PowerShell ISE
  • Windows PowerShell (x86)
  • Windows PowerShell ISE (x86)

Windows'un 64 bit sürümünde Windows PowerShell konsolunun ve Windows PowerShell Tümleşik Betik Ortamı'nın (ISE) 64 bit sürümüne ve kısayollardaki (x86) son ekinde belirtildiği gibi her birinin 32 bit sürümüne sahip olursunuz.

Not

Windows 11 yalnızca 64 bit işletim sistemi olarak sunulur. Windows 11'in 32 bit sürümü yoktur. Ancak Windows 11, Windows PowerShell ve Windows PowerShell ISE'nin 32 bit sürümlerini içerir.

Windows'un daha eski bir 32 bit sürümünü çalıştırıyorsanız yalnızca iki kısayola sahip olursunuz. Bu kısayolların (x86) son eki yoktur, ancak 32 bit sürümlerdir.

64 bit işletim sistemi çalıştırıyorsanız, 32 bit sürümünü kullanmak için belirli bir nedeniniz yoksa Windows PowerShell'in 64 bit sürümünü kullanmanızı öneririz.

Hangi Windows 11 sürümünü çalıştırdığınıza bağlı olarak, Windows PowerShell Windows Terminal'de açılabilir.

Microsoft artık PowerShell ISE'yi güncelleştirmez. ISE yalnızca Windows PowerShell 5.1 ile çalışır. PowerShell uzantısına sahip Visual Studio Code (VS Code), PowerShell'in her iki sürümüyle de çalışır. VS Code ve PowerShell uzantısı Windows'ta göndermiyor. VS Code'u ve uzantıyı PowerShell betiklerini oluşturduğunuz bilgisayara yükleyin. Bunları PowerShell'i çalıştırdığınız tüm bilgisayarlara yüklemeniz gerekmez.

PowerShell'i başlatma

Desteklediğim üretim ortamlarında üç farklı Active Directory kullanıcı hesabı kullanıyorum. Bu hesapları bu kitapta kullanılan laboratuvar ortamında yansıtıyorum. Windows 11 bilgisayarımda etki alanı veya yerel yönetici hakları olmayan bir etki alanı kullanıcısı olarak oturum açıyorum.

Şekil 1-1'de gösterildiği gibi Windows PowerShell kısayolunu tıklatarak PowerShell konsolunu başlatın. Şekil 1-2'de gösterildiği gibi konsolun başlık çubuğunda Windows PowerShell olduğuna dikkat edin.

Şekil 1-2 - PowerShell penceresinin başlık çubuğu.

PowerShell'i sıradan bir kullanıcı olarak çalıştırdığınızda bazı komutlar sorunsuz çalışır. Ancak PowerShell, Kullanıcı Erişim Denetimi'ne (UAC) katılmaz. Bu, yönetici onayı gerektiren görevler için yükseltme istenemediği anlamına gelir.

Not

UAC, kötü amaçlı kodun yükseltilmiş ayrıcalıklarla çalışmasını önlemeye yardımcı olan bir Windows güvenlik özelliğidir.

Normal bir kullanıcı olarak oturum açıldığında, Yükseltme gerektiren bir komut çalıştırdığınızda PowerShell bir hata döndürür. Örneğin, bir Windows hizmetini durdurma:

Stop-Service -Name W32Time
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceCon
   troller:ServiceController) [Stop-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
   ands.StopServiceCommand

Çözüm, PowerShell'i yükseltilmiş olarak yerel yönetici olan bir kullanıcı olarak çalıştırmaktır. İkinci etki alanı kullanıcı hesabımı bu şekilde yapılandırdım. En düşük ayrıcalık ilkesine göre, bu hesap bir etki alanı yöneticisi olmamalıdır veya etki alanında yükseltilmiş ayrıcalıklara sahip olmamalıdır.

PowerShell'i yükseltilmiş haklarla başlatmak için Windows PowerShell kısayoluna sağ tıklayın ve Şekil 1-3'te gösterildiği gibi Yönetici olarak çalıştır'ı seçin.

Şekil 1-3 - Bağlam menüsü - Yönetici olarak çalıştır.

Windows'ta sıradan bir kullanıcı olarak oturum açtığınız için Windows sizden kimlik bilgileri ister. Şekil 1-4'te gösterildiği gibi, yerel yönetici olan etki alanı kullanıcınızın kimlik bilgilerini girin.

Şekil 1-4 - Kullanıcı hesabı denetimi - Kimlik bilgilerini girin.

Yükseltilmiş konsol pencerelerinin başlık çubuğunda Şekil 1-5'te gösterildiği gibi Yönetici: Windows PowerShell yazdığına dikkat edin.

Şekil 1-5 - Yükseltilmiş PowerShell penceresinin başlık çubuğu.

PowerShell'i yönetici olarak yükseltilmiş olarak çalıştırdığınıza göre, yükseltme gerektiren bir komut çalıştırdığınızda UAC artık bir sorun değildir.

Önemli

PowerShell'i yalnızca kesinlikle gerekli olduğunda yönetici olarak yükseltilmiş olarak çalıştırmanız gerekir.

Uzak bilgisayarları hedeflediğinizde PowerShell'i yükseltilmiş olarak çalıştırmanız gerekmez. PowerShell'in yükseltilmiş olarak çalıştırılması yalnızca yerel bilgisayarınıza karşı çalışan komutları etkiler.

PowerShell'i bulmayı ve başlatmayı basitleştirebilirsiniz. PowerShell veya Windows Terminal kısayolunu görev çubuğunuz için sabitleyin. PowerShell'i yeniden arayın, ancak bu kez sağ tıklayın ve Şekil 1-6'da gösterildiği gibi Görev çubuğuna sabitle'yi seçin.

Şekil 1-6 - Bağlam menüsü - Görev çubuğuna sabitle.

Önemli

Bu kitabın 2017'de yayımlanan özgün sürümü, PowerShell'i her başlattığınızda yükseltilmiş örneği otomatik olarak başlatmak için görev çubuğuna bir kısayol sabitlemeyi önerdi. Ancak, olası güvenlik endişeleri nedeniyle, bunu artık önermiyorum. PowerShell'in yükseltilmiş bir örneğinden başlattığınız tüm uygulamalar da UAC'yi atlar ve yükseltilmiş olarak çalışır. Örneğin, PowerShell'in yükseltilmiş bir örneğinden bir web tarayıcısı başlatırsanız, ziyaret ettiğiniz kötü amaçlı kod içeren tüm web siteleri de yükseltilmiş olarak çalışır.

PowerShell'i yükseltilmiş izinlerle çalıştırmanız gerektiğinde, Shift tuşuna basarken görev çubuğunuza sabitlenmiş PowerShell kısayoluna sağ tıklayın. Şekil 1-7'de gösterildiği gibi Yönetici olarak çalıştır'ı seçin.

Şekil 1-7 - Bağlam menüsü - Yönetici olarak çalıştır.

PowerShell sürümünüzü belirleme

PowerShell'de durum bilgilerini depolayan otomatik değişkenler vardır. Bu değişkenlerden biri, PowerShell oturumunuz hakkındaki sürüm bilgilerini içeren 'dir $PSVersionTable.

$PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.22621.2428
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2428
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Windows PowerShell'in 5.1'den eski bir sürümünü çalıştırıyorsanız Windows sürümünüzü güncelleştirmeniz gerekir. Windows PowerShell 5.1, şu anda desteklenen Windows sürümlerine önceden yüklenmiştir.

PowerShell sürüm 7, Windows PowerShell 5.1'in yerini almaz; Windows PowerShell ile yan yana yüklenir. Windows PowerShell sürüm 5.1 ve PowerShell sürüm 7 iki farklı üründür. Windows PowerShell sürüm 5.1 ile PowerShell sürüm 7 arasındaki farklar hakkında daha fazla bilgi için bkz . Windows PowerShell 5.1'den PowerShell 7'ye geçiş.

İpucu

Daha önce PowerShell Core olarak bilinen PowerShell sürüm 6 artık desteklenmiyor.

Yürütme ilkesi

PowerShell yürütme ilkesi, PowerShell betiklerini çalıştırabileceğiniz koşulları denetler. PowerShell'deki yürütme ilkesi, kötü amaçlı betiklerin yanlışlıkla yürütülmesini önlemeye yardımcı olmak için tasarlanmış bir güvenlik özelliğidir. Ancak, belirlenen kullanıcıların betikleri kasıtlı olarak çalıştırmasını engelleyemediğinden bu bir güvenlik sınırı değildir. Belirlenen bir kullanıcı PowerShell'de yürütme ilkesini atlayabilir.

Yerel bilgisayar, geçerli kullanıcı veya PowerShell oturumu için bir yürütme ilkesi ayarlayabilirsiniz. Grup İlkesi ile kullanıcılar ve bilgisayarlar için yürütme ilkeleri de ayarlayabilirsiniz.

Aşağıdaki tabloda, geçerli Windows işletim sistemleri için varsayılan yürütme ilkesi gösterilmektedir.

Windows İşletim Sistemi Sürümü Varsayılan Yürütme İlkesi
Windows Server 2022 Uzaktan İmzalı
Windows Server 2019 Uzaktan İmzalı
Windows Server 2016 Uzaktan İmzalı
Windows 11 Kısıtlı
Windows 10 Kısıtlı

Yürütme ilkesi ayarından bağımsız olarak, herhangi bir PowerShell komutunu etkileşimli olarak çalıştırabilirsiniz. Yürütme ilkesi yalnızca betikte çalışan komutları etkiler. Get-ExecutionPolicy Geçerli yürütme ilkesi ayarını belirlemek için cmdlet'ini kullanın.

Bilgisayarınızda yürütme ilkesi ayarını denetleyin.

Get-ExecutionPolicy
Restricted

Tüm kapsamlar için yürütme ilkesi ayarlarını listeleyin.

Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

Tüm Windows istemci işletim sistemleri varsayılan yürütme ilkesi ayarına Restrictedsahiptir. Yürütme ilkesi ayarını kullanarak PowerShell betiklerini Restricted çalıştıramazsınız. Yürütme ilkesini test etmek için aşağıdaki kodu adlı Get-TimeService.ps1bir .ps1 dosya olarak kaydedin.

İpucu

PowerShell betiği, çalıştırmak istediğiniz komutları içeren bir düz metin dosyasıdır. PowerShell betik dosyaları dosya uzantısını .ps1 kullanır. PowerShell betiği oluşturmak için Visual Studio Code (VS Code) gibi bir kod düzenleyicisi veya Not Defteri gibi herhangi bir metin düzenleyicisi kullanın.

Aşağıdaki komutu etkileşimli olarak çalıştırdığınızda, bu komut hatasız tamamlanır.

Get-Service -Name W32Time

Ancak, bir betikten aynı komutu çalıştırdığınızda PowerShell bir hata döndürür.

.\Get-TimeService.ps1
.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

PowerShell'de hata oluşturan bir komut çalıştırdığınızda, komutu yeniden denemeden önce hata iletisini okuyun. Hata iletisinin komutun neden başarısız olduğunu anlattığına dikkat edin:

... çalışan betikler bu sistemde devre dışı bırakıldı.

Betiklerin yürütülmesini etkinleştirmek için yürütme ilkesini cmdlet'iyle Set-ExecutionPolicy değiştirin. LocalMachineScope parametresini belirtmediğinizde varsayılan kapsamdır. Yerel makinenin yürütme ilkesini değiştirmek için PowerShell'i yükseltilmiş olarak yönetici olarak çalıştırmanız gerekir. Betiklerinizi imzalamadığınız sürece yürütme ilkesini kullanmanızı RemoteSigned öneririm. RemoteSigned güvenilir bir yayımcı tarafından imzalanmamış indirilen betikleri çalıştırmanızı engeller.

Yürütme ilkesini değiştirmeden önce, güvenlik etkilerini anlamak için about_Execution_Policies yardım makalesini okuyun.

Bilgisayarınızda yürütme ilkesi ayarını olarak RemoteSigneddeğiştirin.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Yürütme ilkesini başarıyla değiştirdiyseniz PowerShell aşağıdaki uyarıyı görüntüler:

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust.
Changing the execution policy might expose you to the security risks
described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the
execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "N"):y

PowerShell'i yönetici olarak yükseltilmiş olarak çalıştırmıyorsanız, PowerShell aşağıdaki hata iletisini döndürür:

Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWAR
E\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied. To
change the execution policy for the default (LocalMachine) scope, start
Windows PowerShell with the "Run as administrator" option. To change the
execution policy for the current user, run "Set-ExecutionPolicy -Scope
CurrentUser".
At line:1 char:1
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy],
   UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.
   PowerShell.Commands.SetExecutionPolicyCommand

Yönetici olarak yükseltilmiş PowerShell çalıştırmanıza gerek kalmadan geçerli kullanıcının yürütme ilkesini değiştirmek de mümkündür. Yerel makine RemoteSignediçin yürütme ilkesini başarıyla olarak ayarlarsanız bu adım gereksizdir.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Yürütme ilkesi olarak RemoteSignedGet-TimeService.ps1 ayarlandığında betik başarıyla çalıştırılır.

.\Get-TimeService.ps1
Status   Name               DisplayName
------   ----               -----------
Running  W32Time            Windows Time

Özet

Bu bölümde, PowerShell'i nerede bulacağınız ve nasıl başlatabileceğinizi öğrendiniz. Ayrıca PowerShell sürümünü ve yürütme ilkelerinin amacını belirlemeyi de öğrendinsiniz.

İnceleyin

  1. Bir bilgisayarın hangi PowerShell sürümünü çalıştırdığını nasıl belirlersiniz?
  2. Yönetici olarak yükseltilmiş PowerShell'i ne zaman başlatmanız gerekir?
  3. Windows istemci bilgisayarlarında varsayılan yürütme ilkesi nedir ve ne yapmanıza engel olur?
  4. Geçerli PowerShell yürütme ilkesi ayarını nasıl belirlersiniz?
  5. PowerShell yürütme ilkesini nasıl değiştirirsiniz?

Başvurular

Bu bölümde ele alınan kavramlar hakkında daha fazla bilgi edinmek için aşağıdaki PowerShell yardım makalelerini okuyun.

Sonraki adımlar

Sonraki bölümde PowerShell'deki komutların bulunabilirliği hakkında bilgi edineceksiniz. Ayrıca, PowerShell oturumunuzda yardımı görüntüleyebilmek için PowerShell'in yardım dosyalarını indirmeyi de öğreneceksiniz.