【发布时间】:2016-01-21 13:07:41
【问题描述】:
我们的自动构建脚本也会签署 powershell 脚本。但是我们的一些 powershell 脚本没有签名。当我分析时,我们发现有一个已知的陷阱,即 Powershell ise 保存的文件保存在无法签名的 Unicode BigEndian 中。
由于它是自动化过程,如果有一种方法可以检查文件是否以 Unicode 大端格式保存,然后将其更改为 ASCII 将解决我们的问题。
在powershell中有没有办法?
【问题讨论】:
-
PowerShell ISE(在 v3 中验证)创建 UTF-8 文件带有 BOM(字节顺序标记),而不是 Big-Endian Unicode 文件. BOM 可能是问题所在,因为 BOM 的概念在技术上不适用于 UTF-8,并且不鼓励使用,但在 Windows 平台上,它用于将文件显式标记为 UTF-8。
-
请注意,如果您的源代码包含非 ASCII 字符,它们将被替换为文字
?字符。使用Out-File -Encoding ASCII保存。不幸的是,没有 BOM 保存到 UTF-8 文件并非易事,因为Out-File不支持它 - 请参阅 stackoverflow.com/q/5596982/45375
标签: powershell ascii powershell-2.0 powershell-3.0