PowerShell Çıkış Dosyası | PowerShell Dış Dosyasına İlişkin Kapsamlı Kılavuz


PowerShell Çıkış Dosyasına Giriş

PowerShell Out-file komutu herhangi bir dosyanın çıktısını depolar veya yakalar. Çoğu zaman tüm hataları ve çıktıları görmek isteyebiliriz, bu nedenle bunları oluşturulma tarihleriyle birlikte bir dosyada saklamak, bunları yalnızca konsola yazdırmaktan daha iyi bir fikirdir. Çünkü çıktının boyutu çok büyük olabilir, bu durumda çıktıyı dosyaya göndermek daha iyidir.

Sözdizimi:

1. Dosya Dışı

[-FilePath] <String path of file for capturing output>
[[-Encoding] <Encoding types like ASCII,UTF8 etc>]
[-Append<add output to existing file at the end>]
[-Force<append output to file even read only access is there>]
[-NoClobber]
[-Width <int value of number of characters in one line>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf<What will happen on execution of command>]
[-Confirm<Yes or No confirmation before execution of command>]
[<CommonParameters>]

2. Dosya Dışı

[[-Encoding] <Encoding types like ASCII,UTF8 etc>]
-LiteralPath <string exact target file path>
[-Append<add output to existing file at the end>]
[-Force<append output to file even read only access is there>]
[-NoClobber]
[-Width <int value of number of characters in one line>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf<What will happen on execution of command>]
[-Confirm<Yes or No confirmation before execution of command>]
[<CommonParameters>]

Parametreler

Aşağıda verilen parametrelerden bazıları verilmiştir.

1. -Append: Mevcut herhangi bir dosyaya herhangi bir çıktı eklemek istiyorsak bu komutu kullanabiliriz. Bu komut çıktınızı mevcut herhangi bir dosyanın sonuna ekleyecektir.

2. -Confirm: Komutun güvenli bir şekilde yürütülmesini sağlamak için kullanabileceğimiz bu komut. Burada, komutun yürütülmesi için onayınızı isteyecek bir bilgi istemi kutusu görüntülenecektir.

3. -Encoding:Bu komut içeriğimizi yazacağımız dosyanın kodlama türünü tanımlar. Eğer type tanımlamazsak type’ın default değeri olarak UTF8NoBOM alacaktır.

Kabul ettiği birkaç tür vardır; aşağıda verilmiştir:

  • ASCII: Bu türde ASCII 7-bit karakterleri kullanacaktır. Bu tür kodlama çok yaygındır.
  • BigEndianUnicode: Kodlamak için UTF-16 biçimini kullanır. UTF-16 ile big-endian kullanıyor.
  • OEM:Bu durumda, MS-DOS varsayılan kodlamasını ve konsol programını kullanacaktır
  • Unicode: Kodlamak için UTF-16 biçimini kullanır. Ancak UTF-16 ile little-endian kullanıyor.
  • UTF-7: Bu türde kodlama UTF-7 formatında yapılır.
  • UTF8: Bu türde kodlama UTF-8 formatında yapılır.
  • UTF8BOM: Bu türde kodlama UTF 8 BOM formatında yapılır. UTF 8 BOM ile Bayt Sırası işaretlerini kullanır.
  • UTF8NoBOM: Bu tipte kodlama UTF 8 BOM formatında yapılır. UTF 8 BOM ile Bayt sırası işaretlerini kullanmaz.
  • UTF32: Bu türde kodlama UTF-32 formatında yapılır.
  • PowerShell sürüm 6.2 veya üzerini kullanırsak, herhangi bir kayıt kod sayfasının sayısal kimliğini de kullanabiliriz, örneğin -Encode 1251. Burada 1251, sayfa numarası kimliğidir. Kayıt kod sayfasının bir dize adını kullanabiliriz, örneğin -Encode “Windows - 1251”.

4. -FilePath:Bu komut, çıktıyı (hata veya olayların çıktısı) yakalamak veya göndermek istediğimiz çıktı dosyasının yolunu tanımlar.

5.-Force: Salt okunur erişime sahip herhangi bir dosyanın bulunduğunu varsayalım; o zaman, bu durumda -Force komutu onun üzerine yazmanıza izin verecektir. Force parametresinin yalnızca dosyaya salt okunur erişim durumunda yazılabileceğini unutmayın; o dosyadaki güvenlik kısıtlamalarının üzerine yazamaz. Bu da güvenlikten ödün veremeyeceği anlamına gelir.

6. -InputObject: Dosyaya yazılacak Nesneyi tanımlar. Object'i, Type'ı içeren herhangi bir değişkeni veya herhangi bir Object'i (Object'i çıktı olarak) döndürecek herhangi bir komut veya ifadeyi alabiliriz.

7. -LiteralPath:Burada çıktı yakalama için dosya yolunu tanımlarız. Tam yolu bildiğimizde gerçek yolu yazarız; içinde joker karakteri geçemeyiz. Örneğin “*.txt” gibi bir yol kullanmayı deneyeceksek “/desktop/ranjan/test.txt”yi geçmemiz gerekiyor; işe yaramazdı. Kaçış karakteri kullanabilirsek ancak bu durumda onu tek tırnak işareti içine almamız gerekir. Tek bir tırnak kullanarak PowerShell'e bunun bir kaçış karakteri olduğunu bildiririz.

8. -NoNewline:Dosyanın sonuna yeni bir satır karakteri eklemek istemezsek bu komutu kullanabiliriz.

9. -WhatIf:Komutun yürütülmesi sırasında ne olacağını görüntüleyin; gerçek yürütme olmadan çalıştıracağınız komutun amacı hakkında size netlik kazandıracaktır.

10. -Width: Çıktının her satırında kaç karakter bulunabileceğini tanımlar. Fazladan bir karakter olacaksa bu kesilecektir. Bu özelliği kullanmazsanız, bu değeri ana bilgisayara göre tanımlayacaktır. Genel olarak PowerShell 80 karakter barındırabilir.

PowerShell Çıkış Dosyası Örnekleri

Aşağıda PowerShell Out-File örnekleri verilmiştir:

Örnek #1

Bu örnekte tüm süreçleri bir dosyaya sığdırmaya çalışıyoruz; tüm süreci yakalayacak bir komut olarak -FilePath'e argüman olarak ".\captureprocess.txt" ilettiğimizi görebiliriz ve cat ./captureprocess.txt dosyasını yazarken tüm süreç adlarını içerir.

Get-Process | Out-File -FilePath .\captureprocess.txt
cat ./Process.txt

Çıktı:

Örnek #2

Bu örnekte, ./capturechilditem.txt dosyasını içeren geçerli klasörün tüm alt öğelerini (dosyalar ve klasörler) yakalıyoruz.

Get-ChildItem | Out-File -FilePath .\capturechilditem.txt
cat ./capturechilditem.txt

Çıktı:

Örnek #3

Bu örnekte, çıktıyı catchchilditem.txt dosyasına alıyoruz ancak -Confirm komutunu kullanıyoruz; bu komut bir bilgi istemi oluşturacak ve komutun yürütülmesinden önce onayınızı isteyecektir.

Get-Process | Out-File -FilePath .\capturechilditem.txt -Confirm
cat ./capturechilditem.txt

Çıktı:

Örnek #4

Bu komutta -WhatIf kullanıyoruz ve komutun gerçek anlamda yürütülmesine gerek kalmadan çıktıyı görebilirsiniz. Basitçe söylemek gerekirse, hiçbir şeyi etkilemeden komutu çalıştırmaya yönelik bir denemedir. Bu komutu, fiili yürütmeden önce komutun yürütülme amacını anlamak için kullanırız.

Get-Process | Out-File -FilePath .\capturechilditem.txt -WhatIf

Çıktı:

Örnek #5

-Force komutunu kullanıyoruz ve çıktıyı catchchilditem.txt dosyasına gönderiyoruz; burada bu dosyanın yalnızca okuma erişimine sahip olduğunu varsayıyoruz. Burada, dosyaya çıktı yazmak için Force kullanılacaktır. Kuvvet güvenlik kriterlerini atlayamaz.

Get-Process | Out-File -FilePath .\capturechilditem.txt -Force
cat ./capturechilditem.txt

Çıktı:

Çözüm

Yukarıdaki eğitimden Out-File komutunun yardımıyla dosya çıktısını yakalayabileceğimizi (gönderebileceğimizi) öğrendik; bu çıktı hatalar veya herhangi bir olay veya aktivite olabilir.

İlgili makaleler