Out-File (Microsoft.PowerShell.Utility)
Out-File
- Modül:
- Microsoft.PowerShell.Utility
Çıktıyı bir dosyaya gönderir.
Sözdizimi
Out-File
[-FilePath] <string>
[[-Encoding] <Encoding>]
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Out-File
[[-Encoding] <Encoding>]
-LiteralPath <string>
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Tanım
Out-File cmdlet'i çıktıyı bir dosyaya gönderir. Dosyaya yazmak için dolaylı olarak PowerShell'in biçimlendirme sistemini kullanır. Dosya, terminalle aynı ekran gösterimini alır. Bu, tüm giriş nesneleri dize olmadığı sürece çıktının programlı işleme için ideal olmayabileceği anlamına gelir.
Yeniden yönlendirme operatörünü (>) kullanarak bir PowerShell komutunun çıktısını (cmdlet, işlev, komut dosyası) yeniden yönlendirmek, işlevsel olarak hiçbir ekstra parametre olmadan Dosya Dışı'a yönlendirmeye eşdeğerdir. PowerShell 7.4, yerel bir komutun stdout akışını yönlendirmek için kullanıldığında yeniden yönlendirme operatörünün davranışını değiştirdi. Yeniden yönlendirme hakkında daha fazla bilgi için bkz. about_Redirection.
Örnekler
Örnek 1: Çıktıyı gönderin ve bir dosya oluşturun
Bu örnek, yerel bilgisayarın işlemlerinin bir listesinin bir dosyaya nasıl gönderileceğini gösterir. Dosya mevcut değilse Out-File, dosyayı belirtilen yolda oluşturur.
Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
29 22.39 35.40 10.98 42764 9 Application
53 99.04 113.96 0.00 32664 0 CcmExec
27 96.62 112.43 113.00 17720 9 CodeGet-Process cmdlet'i yerel bilgisayarda çalışan işlemlerin listesini alır. Process nesneleri ardışık düzen üzerinden Out-File cmdlet'ine gönderilir. Out-File, FilePath parametresini kullanır ve geçerli dizinde Process.txt adında bir dosya oluşturur. Get-Content komutu, dosyadan içerik alır ve bunu PowerShell konsolunda görüntüler.
Örnek 2: Mevcut bir dosyanın üzerine yazılmasını önleme
Bu örnek, mevcut bir dosyanın üzerine yazılmasını önler. Varsayılan olarak Dosya Dışı mevcut dosyaların üzerine yazar.
Get-Process | Out-File -FilePath .\Process.txt -NoClobber
Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Get-Process cmdlet'i yerel bilgisayarda çalışan işlemlerin listesini alır. Process nesneleri ardışık düzen üzerinden Out-File cmdlet'ine gönderilir. Out-File, FilePath parametresini kullanır ve geçerli dizindeki Process.txt adlı bir dosyaya yazmaya çalışır. NoClobber parametresi dosyanın üzerine yazılmasını önler ve dosyanın zaten mevcut olduğunu belirten bir mesaj görüntüler.
Örnek 3: Çıktıyı ASCII biçimindeki bir dosyaya gönderme
Bu örnek, çıktının belirli bir kodlama türüyle nasıl kodlanacağını gösterir.
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50Get-Process cmdlet'i yerel bilgisayarda çalışan işlemlerin listesini alır. Process nesneleri $Procs değişkeninde saklanır. Out-File, FilePath parametresini kullanır ve geçerli dizinde Process.txt adında bir dosya oluşturur. InputObject parametresi, $Procs dosyasındaki işlem nesnelerini Process.txt dosyasına aktarır. Kodlama parametresi çıktıyı ASCII biçimine dönüştürür. Genişlik parametresi dosyadaki her satırı 50 karakterle sınırlandırır, dolayısıyla bazı veriler kesilebilir.
Örnek 4: Bir sağlayıcı kullanın ve çıktıyı bir dosyaya gönderin
Bu örnek, FileSystem sağlayıcı sürücüsünde olmadığınızda Out-File cmdlet'inin nasıl kullanılacağını gösterir. Yerel bilgisayarınızdaki sağlayıcıları görüntülemek için Get-PSProvider cmdlet'ini kullanın. Daha fazla bilgi için bkz. about_Providers.
PS> Set-Location -Path Alias:
PS> Get-Location
Path
----
Alias:\
PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt
PS> Get-Content -Path C:\TestDir\AliasNames.txt
CommandType Name
----------- ----
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias cat -> Get-ContentSet-Location komutu, geçerli konumu Alias: kayıt defteri sağlayıcısına ayarlamak için Path parametresini kullanır. Get-Location cmdlet'i Alias:'ın tam yolunu görüntüler. Get-ChildItem, nesneleri işlem hattından Out-File cmdlet'ine gönderir. Out-File, C:\TestDir\AliasNames.txt çıktısının tam yolunu ve dosya adını belirtmek için FilePath parametresini kullanır. Get-Content cmdlet'i Path parametresini kullanır ve dosyanın içeriğini PowerShell konsolunda görüntüler.
Örnek 5: Kapsamın tamamı için dosya çıktı genişliğini ayarlayın
Bu örnek, tüm Out-File çağrıları ve yeniden yönlendirme operatörleri (>Width parametresini ayarlamak üzere $PSDefaultParameterValues kullanır > ve >>) 2000'e kadar. Bu, tablo biçimli verileri dosyaya çıkardığınız geçerli kapsam dahilindeki her yerde, PowerShell'in PowerShell ana bilgisayarının konsolu tarafından belirlenen satır genişliği yerine 2000 satır genişliği kullanmasını sağlar. Genişlik.
function DemoDefaultOutFileWidth() {
try {
$PSDefaultParameterValues['out-file:width'] = 2000
$logFile = "$pwd\logfile.txt"
Get-ChildItem Env:\ > $logFile
Get-Service -ErrorAction Ignore |
Format-Table -AutoSize |
Out-File $logFile -Append
Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
}
finally {
$PSDefaultParameterValues.Remove('out-file:width')
}
}
DemoDefaultOutFileWidth$PSDefaultParameterValues hakkında daha fazla bilgi için bkz. about_Preference_Variables.
Parametreler
-Append
Çıktıyı mevcut bir dosyanın sonuna ekler.
- Tip :
SwitchParameter
- Konum:
-
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Confirm
Cmdlet'i çalıştırmadan önce sizden onay ister.
- Tip :
SwitchParameter
- Takma adlar:
cf
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
-
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Encoding
Hedef dosyanın kodlama türünü belirtir. Varsayılan değer utf8NoBOM'dur.
Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:
ascii: ASCII (7 bit) karakter kümesinin kodlamasını kullanır.ansi: Geçerli kültürün ANSI kod sayfası için kodlamayı kullanır. Bu seçenek PowerShell 7.4'e eklenmiştir.bigendianunicode: Big-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.bigendianutf32: Big-endian bayt sırasını kullanarak UTF-32 biçiminde kodlar.oem: MS-DOS ve konsol programları için varsayılan kodlamayı kullanır.unicode: Little-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.utf7: UTF-7 formatında kodlar.utf8: UTF-8 formatında kodlar.utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 formatında kodlarutf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlarutf32: UTF-32 formatında kodlar.
PowerShell 6.2'den başlayarak, Kodlama parametresi ayrıca kayıtlı kod sayfalarının sayısal kimliklerine (-Encoding 1251 gibi) veya kayıtlı kod sayfalarının dize adlarına (-Encoding gibi) izin verir "windows-1251"). Daha fazla bilgi için Encoding.CodePage için .NET belgelerine bakın.
PowerShell 7,4'ten başlayarak, geçerli kültürün ANSI kod sayfasının sayısal kimliğini manuel olarak belirtmek zorunda kalmadan iletmek için Encoding parametresi için Ansi değerini kullanabilirsiniz.
Not
UTF-7*'nin kullanılması artık önerilmemektedir. PowerShell 7.1'den itibaren Encoding parametresi için utf7 belirtirseniz bir uyarı yazılır.
- Tip :
Kodlama
- Kabul edilen değerler:
ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
- Konum:
1
- Varsayılan değer:
UTF8NoBOM
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-FilePath
Çıkış dosyasının yolunu belirtir.
- Tip :
String
- Takma adlar:
Path
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Force
Salt okunur özniteliğini geçersiz kılar ve mevcut bir salt okunur dosyanın üzerine yazar. Zorla parametresi güvenlik kısıtlamalarını geçersiz kılmaz.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-InputObject
Dosyaya yazılacak nesneleri belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın.
- Tip :
PSObject
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-LiteralPath
Çıkış dosyasının yolunu belirtir. LiteralPath parametresi tam olarak yazıldığı gibi kullanılır. Joker karakterler kabul edilmez. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler. Daha fazla bilgi için bkz. about_Quoting_Rules.
- Tip :
String
- Takma adlar:
PSPath, LP
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-NoClobber
NoClobber mevcut bir dosyanın üzerine yazılmasını önler ve dosyanın zaten mevcut olduğunu belirten bir mesaj görüntüler. Varsayılan olarak, belirtilen yolda bir dosya varsa, Dosya Dışı herhangi bir uyarıda bulunmadan dosyanın üzerine yazar.
- Tip :
SwitchParameter
- Takma adlar:
NoOverwrite
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-NoNewline
Dosyaya yazılan içeriğin yeni satır karakteriyle bitmediğini belirtir. Giriş nesnelerinin dize temsilleri çıktıyı oluşturmak için birleştirilir. Çıkış dizeleri arasına boşluk veya yeni satır eklenmez. Son çıktı dizesinden sonra yeni satır eklenmez.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-WhatIf
Cmdlet çalıştırılırsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.
- Tip :
SwitchParameter
- Takma adlar:
wi
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Width
Her çıktı satırındaki maksimum karakter sayısını belirtir. Ek karakterler kaydırılmaz, kısaltılır. Bu parametre kullanılmazsa genişlik, ana bilgisayarın özelliklerine göre belirlenir. PowerShell konsolu için varsayılan değer 80 karakterdir. Tüm Out-File çağrılarının yanı sıra yeniden yönlendirme operatörlerinin (> ve >>) genişliğini kontrol etmek istiyorsanız, 'i ayarlayın. .Out-File'ı kullanmadan önce$PSDefaultParameterValues['out-file:width']=2000
- Tip :
Int32
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
Girişler
PSObject
Bu cmdlet'e herhangi bir nesneyi aktarabilirsiniz.
Çıkışlar
Yok
Bu cmdlet hiçbir çıktı döndürmez.
Notlar
Giriş nesneleri, terminalde oldukları gibi otomatik olarak biçimlendirilir, ancak dosyanın çıktısının biçimlendirmesini açıkça denetlemek için bir Format-* cmdlet'i kullanabilirsiniz. Örneğin, Get-Tarihi | Biçim Listesi | Out-File out.txt
Bir PowerShell komutunun çıktısını Out-File cmdlet'ine göndermek için ardışık düzeni kullanın. Alternatif olarak, verileri bir değişkende depolayabilir ve verileri Out-File cmdlet'ine aktarmak için InputObject parametresini kullanabilirsiniz.
Out-File verileri bir dosyaya kaydeder ancak işlem hattına herhangi bir çıktı nesnesi üretmez.
PowerShell 7.2, ANSI kaçış dizilerinin nasıl oluşturulduğunu kontrol etme yeteneğini ekledi. Out-File'a aktarılan ANSI ile dekore edilmiş çıktı, $PSStyle.OutputRendering özelliğinin ayarına göre değiştirilebilir. Daha fazla bilgi için bkz. about_ANSI_Terminaller.