Saya memiliki skrip PowerShell yang ingin saya redirect output ke file. Masalahnya adalah saya tidak bisa mengubah cara penulisan skrip ini. Jadi saya tidak bisa melakukan:
.\MyScript.ps1 > output.txt
Bagaimana cara mengarahkan output skrip PowerShell selama eksekusi?
powershell
scripting
stdout
Martin
sumber
sumber
Microsoft telah mengumumkan di situs web Powershell's Connections (2012-02-15 pada 16:40) bahwa dalam versi 3.0 mereka telah memperluas pengalihan sebagai solusi untuk masalah ini.
Lihat artikel bantuan "about_Redirection" untuk detail dan contoh.
sumber
Menggunakan:
sumber
Saya kira Anda bisa memodifikasi
MyScript.ps1
. Kemudian cobalah untuk mengubahnya seperti ini:Saya baru saja mencoba ini dengan PowerShell 3. Anda dapat menggunakan semua opsi pengalihan seperti pada jawaban Nathan Hartley .
sumber
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
tetapi Powershell benar-benar jelek jika Anda perlu mengontrol output dengan tepat.Salah satu solusi yang mungkin, jika situasi Anda memungkinkan:
Buat MyScript.ps1 baru yang terlihat seperti:
. \ TheRealMyScript.ps1> output.txt
sumber
sumber
Anda mungkin ingin melihat Tee-Object cmdlet . Anda dapat menyalurkan output ke Tee dan akan menulis ke pipeline dan juga ke file
sumber
Jika Anda ingin pengalihan langsung semua output ke file, coba gunakan
*>>
:Karena ini adalah pengalihan langsung ke file, itu tidak akan ditampilkan ke konsol (sering membantu). Jika Anda menginginkan output konsol, gabungkan semua output dengan
*&>1
, dan kemudian pipa denganTee-Object
:Saya percaya teknik ini didukung di PowerShell 3.0 atau yang lebih baru; Saya menguji pada PowerShell 5.0.
sumber
Jika Anda ingin melakukannya dari baris perintah dan tidak dibangun ke dalam skrip itu sendiri, gunakan:
sumber
Untuk menanamkan ini dalam skrip Anda, Anda dapat melakukannya seperti ini:
Itu harus melakukan trik.
sumber