Powershell 脚本适用于服务器,但不适用于 cloudformation cfn-init 函数

Powershell script works on server but not with cloudformation cfn-init functions

我必须通过 cloudformation 脚本设置 windows ec2 服务器。 我有一些 powershell 脚本,可以添加标签并以特定格式格式化磁盘驱动器。

问题是当从 cloudformation cfn 函数调用此 powershell 脚本时,它会给出类似(来自 LOGS)的错误

a-label-format-drives-sql output: At C:\cfn\scripts\Label-and-Format-drives.ps1:44 char:35
+     $ErrorActionPreference = "Stop"
+                                   ~
The string is missing the terminator: ".
At C:\cfn\scripts\Label-and-Format-drives.ps1:36 char:5
+     {
+     ~
Missing closing '}' in statement block.
At C:\cfn\scripts\Label-and-Format-drives.ps1:27 char:19
+   $LablenFormatPs={
+                   ~
Missing closing '}' in statement block.
At C:\cfn\scripts\Label-and-Format-drives.ps1:19 char:5
+ try {
+     ~
Missing closing '}' in statement block.
At C:\cfn\scripts\Label-and-Format-drives.ps1:64 char:1
+ 
The Try statement is missing its Catch or Finally block.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

但是当同一个脚本在同一个 windows ec2 的 powershell 控制台中直接 运行 时,它 运行 完全没问题。我将这个 poweshell 脚本上传到 s3 存储桶,我在 cloudformation 中获取它并将它保存在 ec2 实例上。

这是我的完整脚本。 https://gist.github.com/rturam/c969e161b4089ac62d89b8ba5d1d1612

我可以自己解决这个问题。从网站复制粘贴到编辑器时出现问题。粘贴时会出现一些奇怪的字符,并且在编辑器中看不到。 诀窍就是在 PowerShell CLI 中执行 cat <file_name>。如果有的话,它会显示外来字符。