【问题标题】:PowerShell script error: the string is missing the terminator:PowerShell 脚本错误:字符串缺少终止符:
【发布时间】:2017-11-13 14:47:30
【问题描述】:

非常简单的 powershell 脚本...

#Server side storage copy

$SourceStorageAccount = "myStorageAccount"
$SourceStorageKey = "myKey"

$SourceStorageContext = New-AzureStorageContext –StorageAccountName $SourceStorageAccount -StorageAccountKey $SourceStorageKey

因错误而失败

在 E:\DeploymentScripts\Storage\Test.ps1:6 char:51 + ... geContext -StorageAccountName $SourceStorageAccount -StorageAccount ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ 字符串 缺少终结符:“。 + CategoryInfo : ParserError: (:) [], ParseException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

最奇怪的是,如果我将 ps1 文件的内容复制并粘贴到 PowerShell 命令行中,它可以正常工作!?怎么回事?

显然我已经删除了我的存储容器名称和密钥,您需要分配自己的 Azure 存储帐户名称和 api 密钥来复制它。

编辑:在 Notepad++ 中编辑的脚本的屏幕截图,所有字符都可见...

【问题讨论】:

  • 启用查看隐藏字符,这通常意味着您在命令行或变量名中有一些有趣的字符。
  • @MBen 已完成,但问题仍然存在。我也尝试过几次删除和重新创建引号
  • 和这个question类似。
  • @Walter-MSFT 正确...我从一个网站复制并粘贴了代码,有一个长破折号....在 New-AzureStorageContext 之后和 StorageAccountName 之前不是一个短破折号跨度>
  • @Mick 你解决了吗?

标签: powershell azure azure-storage azure-blob-storage azure-powershell


【解决方案1】:

question类似。

当您从 Web 复制 cmdlet 时,可能会有一些特殊字符。我建议您可以将 cmdlet 复制到记事本,然后复制到 PowerShell。

在终端中使用 cat filename.ps1 很有帮助,你可以看到确定哪些字符不好,在编辑器中并不明显。

【讨论】:

  • 在我的情况下,我必须在 Notepad++ 中将编码更改为 Windows-1252 才能发现这些特殊字符。从菜单编码 -> 字符集 -> 西欧 -> Windows-1252。因此,我花了几个小时来查找我的 PowerShell 脚本的问题。
【解决方案2】:

因此,部分代码是从具有非标准破折号字符的网站复制和粘贴的。我发现当您使用 powershell 命令行中的 cat 命令列出文件时更容易查看字符

这是 powershell 中列出的内容的屏幕截图:-

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 2014-01-09
    • 2022-01-09
    • 2017-04-10
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多