30.08.2025

Çok satırlı powershell komutları

Powershell'de işimizi tek satırda bitiremediğimiz durumlar olduğunda alt satırda kaldığımız yerden devam edebilmek için bir backtick ya da backquote olarak bilinen " ` " karakteri kullanılır. Ama dikkat, bu tek tırnak " ' " (veya apostrof olarak bilinen) karakterinden farklı bir karakterdir. Yalnız bu karakterden sonra hemen enter (carriage return / line feed) gelmelidir.

Örnek şu olabilir:

Get-WinEvent -ComputerName UZAKPC -Filterhashtable ` @{LogName="System";StartTime=(Get-Date).AddDays(-7)}

Ama şu adreste bahsedildiği gibi, bu karakterin bazı olumsuz yanları var. Aslında bu karakteri kullanmadan da alt satıra geçerek devam edilebiliyor. Alternatif yöntemler (aynı siteden alıntı):

1. Aritmetik işleçler

Dört işleme ilave olarak bit olarak sağa/sola kaydırma işleçleri sonrasında alt satıra geçilebilir. Örnek:

$GunlukToplamOlaySayisi =
$HaftalikToplamOlaySayisi /
$BirHaftadakiGunSayisi

2. Atama operatörleri

En çok bilinen atama operatörü olarak eşittirden başka artırarak eşittir, çarparak eşittir gibi dört işlemein de oldğu eşittirler var. Ve birkaç tane daha:

=    +=    -+    *=    /=    %=    ++    -- 

Yukarıdaki örnekte de eşittirden sonra alt satıra geçmiştim.

3. Karşılaştırma işleçleri

Karşılaştırma için kullanılan aşağıdaki işleçler

-eq   -ne   -gt   -lt   -le   -ge   -match   -like   -in   -contains   -replace

Örnek olarak

$event[0].properties[0].Value -eq
$event[1].properties[0].Value

4. Mantıksal işleçler

Mantıksal VE, VEYA ve diğer işleçler:

-and   -or    -xor    -not   ! 

5. Ayırma ve birleştirme işleçleri

-split   -join

6. Tip işleçleri

Tip karşılaştırması için kullanılan aşağıdaki işleçler

-is   -isnot   -as

7. Alt ifade işleçleri (subexpression operators) 

Paranteze alınmış bir ifadeyi çalıştırmak için kullanılan $( ... ) ifadesi.

8. Dizi oluşturma işleci

Bir dizi oluşturmak için @(...) kullanılıyor. Bu ve içindeki öğelerin her biri ayrı satırlara gelebilir, aşağıdaki gibi.

$BuyukSehirler = @(
'İstanbul',
'Ankara',
)

9. Hash table işleci

ADizi işlecine benzer şekilde hash table işleci @{ ... } ile de alt satıra geçilebilir.

10. Virgül

Dizi öğelerini ayırmak için ya da parametreleri ayırmak için kullanılan virgüller sonrasında da yeni satıra geçilebilir. Bunun örneğini de 8'de vermiştim.

11. Biçimlendirme işleci

Karakter dizilerini biçimlendirmek için kullanılan -f işleci, söz konusu olan.

12. Köşeli parantezler

Genel olarak indekslemek için kullanıldığı durumlarda.

$HaftaninGunleri[
$BirSekildeBugununHaftaninKacinciGunuOldugunuTutanDegisken
]

13. Betik bloğu işleci

İşletilmek üzere bir küme parantezleri içinde oluşturulan bir betik bloğu için küme parantezleri öncesinde ve sonrasında. Örnek:


Invoke-Command -ComputerName UZAKPC -ScriptBlock {
hostname

14. Özellik ayırma işleci

Bir nesnenin içindeki özelliğe başvuru yapmamızı sağlayan nokta, burada kastedilen. Noktadan sonra da yeni satıra geçilebilir. Örnek.

$event[0].
Properties[0].
Value

 15. Static Member Operator

Sadece örnek:

$Rule = [Microsoft.Windows.PowerShell.ScriptAnalyzer.BuiltinRules.AvoidUsingConvertToSecureStringWithPlainText]::
    New() 

15. Menzil işleci

Art arda gelen iki nokta " .. ", başlangıç ve sonu verilen aralıkta düzenli aran veya azalan dizi oluşturmak için kullanılır. 

1..
125 | foreach { $_ }

16. Boru işleci

Bir komudun çıktısını başka bir komuda giriş olarak veren " | " işleci.

Get-ADUser -Filter * |
Where-Object { $_.Name -like "Ahm*" } 

17. Splatting

Splatting aslında alt satıra geçme işleci değil ama çok satırlı yapıdan kurtulmak için kullanılabilir.

$smtpParams = @{
From = "gonderen@firma.com"
To = "alici@firma.com"
Subject = "deneme mesajı"
}

Send-MailMessage $smtpParam

Tüm bunlardan bağımsız, birden çok satırda olması gereken karakter dizesi değişkenler için @" ... "@ notasyonu var. Yalnız başlangıç işaretçisi olan @" ikilisinden sonra ve bitiş işaretçisi olan "@ ikilisinden önce bir karakter olmamalı.

$Alınti=@"
Halk içinde muteber bir nesne yok devlet gibi
Olmaya devlet cihânda bir nefes sıhhat gibi
"@

Hiç yorum yok: