PowerShell ile birkaç aylık deneyimim ve bazı bilimsel deneyimlerden sonra çıkardıklarımın bir özeti burada. Bunların hiçbirini belgelerde bulamadım :(
[ Güncelleme: Bunun çoğu artık daha iyi belgelenmiş gibi görünüyor.]
Okuma ve yazma kilitleme
Çalışırken Out-Filebaşka bir uygulama günlük dosyasını okuyabilir.
Çalışırken Set-Content, diğer uygulamalar günlük dosyasını okuyamaz. Bu nedenle aslaSet-Content uzun süre çalışan komutları günlüğe kaydetmek için kullanmayın .
Kodlama
Out-Filevarsayılan olarak Unicode( UTF-16LE) kodlamasına kaydeder (ancak bu belirtilebilir), oysa PowerShell 3+ ' Set-Contentde ASCII( US-ASCII) varsayılan olarak (bu da belirtilebilir). Önceki PowerShell sürümlerinde, Set-Contentiçeriği Default(ANSI) kodlamasında yazıyordu .
Editörün notu : PowerShell sürüm 5.1 itibariyle halen kültür özele varsayılan Default( "ANSI") kodlayan, hangi belgelerin iddialarına rağmen. ASCII varsayılan ise, değişmez değereü dönüştürülecek gibi ASCII olmayan karakterler , ancak durum böyle değil : verim . ?'ü' | Set-Content tmp.txt; (Get-Content tmp.txt) -eq '?'$False
PS > $null | out-file outed.txt
PS > $null | set-content set.txt
PS > md5sum *
f3b25701fe362ec84616a93a45ce9998 *outed.txt
d41d8cd98f00b204e9800998ecf8427e *set.txt
Bu, iki komutun varsayılan değerlerinin uyumsuz olduğu ve bunları karıştırmanın metni bozacağı anlamına gelir, bu nedenle her zaman bir kodlama belirtin.
Biçimlendirme
Bartek'in açıkladığı gibi, Out-Fileçıktının süslü biçimlendirmesini terminalde görüldüğü gibi kaydeder. Yani iki dosya içeren bir klasörde komut dir | out-file out.txt11 satırlık bir dosya oluşturur.
Oysa Set-Contentdaha basit bir gösterimi kaydeder. İki dosya içeren bu klasörde, komut dir | set-content sc.txtiki satırlı bir dosya oluşturur. Terminaldeki çıktıya öykünmek için:
PS > dir | ForEach-Object {$_.ToString()}
out.txt
sc.txt
Bu biçimlendirmenin satır sonları için bir sonucu olduğuna inanıyorum, ancak bunu henüz açıklayamıyorum.
Dosya oluşturma
Set-Contentgüvenilir bir şekilde boş bir dosya oluşturmaz Out-File:
Komut boş bir klasörde dir | out-file out.txtbir dosya oluştururken oluşturmaz dir | set-content sc.txt.
Boru Hattı Değişkeni
Set-Contentdosya adını boru hattından alır; bir dizi dosyanın içeriğini sabit bir değere ayarlamanıza izin verir.
Out-Fileverileri boru hattından olduğu gibi alır; tek bir dosyanın içeriğini güncelleme.
Parametreler
Set-Content aşağıdaki ek parametreleri içerir:
- Hariç tut
- Filtrele
- Dahil etmek
- PassThru
- Akış
- Kullanım İşlemi
Out-File aşağıdaki ek parametreleri içerir:
Bu parametrelerin ne olduğu hakkında daha fazla bilgi için lütfen yardıma bakın; ör get-help out-file -parameter append.
Set-Contentvarsayılan kodlama: çevrildi(Get-Culture).Textinfo.ANSICodePage(Windows 8.1, Powershell 4.0, CurrentCulturecs-CZ, CurrentUICultureen-GB, ANSICodePage1250, OEMCodePage852,'řž'yukarıdaki kod sayfalarında farklı kodlarla dize kullanılarak test edilmiştir ).