为什么加括号会抑制错误?
PS D:\logs> Get-Content .\cluster.log -Encoding Unicode | Set-Content -Encoding UTF8 -Path .\cluster.log
Set-Content : The process cannot access the file 'D:\logs\cluster.log' because it is being used by another process.
At line:1 char:58
+ ... g Unicode | Set-Content -Encoding UTF8 -Path .\cluster.log ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Set-Content], IOException
+ FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.SetContentCommand
PS D:\logs> (Get-Content .\cluster.log -Encoding Unicode) | Set-Content -Encoding UTF8 -Path .\cluster.log
PS D:\logs>
1条答案
按热度按时间wfauudbj1#
由于
Get-Content
和Set-Content
是同一管道的一部分,它们试图在管道的开始处打开文件。由于Get-Content
先打开文件而没有启用写共享,因此Set-Content
无法打开它。括号使Get-Content
在子管道中运行。现在Set-Content
可以再次打开已经关闭的文件。