Powershell 2.0 komut satırı:Aşağıdaki tutarsızlık bir açıklama arıyorum yönlendirme
aşağıdaki Powershell komut foo.ps1 Verilen: it Running
write-host "normal"
write-error "error"
write-host "yay"
C:\>powershell .\foo.ps1 > out.txt 2>&1
ile
üretir:
normal
C:\foo.ps1 : error
At line:1 char:10
+ .\foo.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,foo.ps1
Write-Host : The OS handle's position is not what FileStream expected. Do not use a handle simultaneously in one FileStream and in Win32 co
de or another FileStream. This may cause data loss.
At C:\foo.ps1:3 char:11
+ write-host <<<< "yay"
+ CategoryInfo : NotSpecified: (:) [Write-Host], IOException
+ FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.WriteHostCommand
Ama birlikte çalışan:
C:\>powershell .\foo.ps1 2>&1 > out.txt
(doğru) üretir:
normal
C:\foo.ps1 : error
At line:1 char:10
+ .\foo.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,foo.ps1
yay
Neredeyse ancak yönlendirme sırası Windows önemi olduğunu düşünerek içine tüm kendim çözüldü
TechNet usage page for command redirection örnekler şekilde hataları yönlendirmeyi önceki dosya yeniden yönlendirme göstermektedir.
Birisi bana bunu açıklayabilir misiniz ?
C:\>powershell get-host
Name : ConsoleHost
Version : 2.0
InstanceId : 53c90e87-ded1-44f9-8e8d-6baaa1335420
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
ve yazmaya karşı çıktı kullanarak aynı sonucu üretir:
Referans için, bu konuda Server 2003 x64 SP2 üzerinde yapılıyor.
(Bu soru this çözümünde işime ilişkilidir.) PowerShell 2.0 bir hata gibi görünüyor
ben cevabını bilmiyorum ama o yaz-Sunucu tüm diğer Yaz davranırlar farklı muamele alır biliyorum. Ben şimdi veba gibi önlemek istiyorum. Testinizi Write-Output ile deneyin. Bahşiş için – EBGreen
teşekkürler! maalesef aynı sonuç ortaya çıkıyor. –
Write-Output ve Write-Host'un çok farklı amaçları vardır. Write-Host, PowerShell ana bilgisayarına bilgi (metin) yazar. Yaz-Çıktı ardından boru hattı girişini kabul eden bir komutla tarafından yakalanan ve işlenebilir PowerShell boru hattı, bir nesneyi yazar. Böyle bir komut kullanılmazsa, nesne çıkışı da ana bilgisayara verilir. –