使用 PowerShell 管道

在大多数情况下,管道的输入将是一个对象数组。虽然 PROCESS{} 块的行为可能看起来类似于 foreach{} 块,但跳过阵列中的元素需要不同的过程。

如果像 foreach{} 一样,你在 PROCESS{} 块中使用了 continue,它会破坏管道,跳过包括 END{} 块在内的所有后续语句。相反,使用 return - 它只会结束当前元素的 PROCESS{} 块并移动到下一个。

在某些情况下,需要输出具有不同编码的函数的结果。CmdLets 输出的编码由 $OutputEncoding 变量控制。当输出打算放入到本机应用程序的管道中时,修复编码以匹配目标 $OutputEncoding = [Console]::OutputEncoding 可能是个好主意。

其他参考:

关于 $OutputEncoding 的更多见解的博客文章 https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/