此PowerShell命令中的括号有什么作用?

enxuqcxy  于 2022-11-29  发布在  Shell
关注(0)|答案(1)|浏览(166)

为什么加括号会抑制错误?

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>
wfauudbj

wfauudbj1#

由于Get-ContentSet-Content是同一管道的一部分,它们试图在管道的开始处打开文件。由于Get-Content先打开文件而没有启用写共享,因此Set-Content无法打开它。括号使Get-Content在子管道中运行。现在Set-Content可以再次打开已经关闭的文件。

相关问题