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-File
baş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-File
varsayılan olarak Unicode
( UTF-16LE
) kodlamasına kaydeder (ancak bu belirtilebilir), oysa PowerShell 3+ ' Set-Content
de ASCII
( US-ASCII
) varsayılan olarak (bu da belirtilebilir). Önceki PowerShell sürümlerinde, Set-Content
iç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.txt
11 satırlık bir dosya oluşturur.
Oysa Set-Content
daha basit bir gösterimi kaydeder. İki dosya içeren bu klasörde, komut dir | set-content sc.txt
iki 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-Content
güvenilir bir şekilde boş bir dosya oluşturmaz Out-File
:
Komut boş bir klasörde dir | out-file out.txt
bir dosya oluştururken oluşturmaz dir | set-content sc.txt
.
Boru Hattı Değişkeni
Set-Content
dosya adını boru hattından alır; bir dizi dosyanın içeriğini sabit bir değere ayarlamanıza izin verir.
Out-File
verileri 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-Content
varsayı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 ).