2

难以置信的简单PowerShell脚本...PowerShell脚本错误:字符串缺少终结者:

#Server side storage copy 

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

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

失败,出现错误

At E:\DeploymentScripts\Storage\Test.ps1:6 char:51 + ... geContext –StorageAccountName $SourceStorageAccount -StorageAccount ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The string is missing the terminator: ". + CategoryInfo : ParserError: (:) [], ParseException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

最奇怪的部分是,如果我复制和粘贴内容将ps1文件转换为PowerShell命令行,它工作正常!这是怎么回事?

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

编辑:在记事本编辑++可见的所有字符脚本的屏幕截图...

A screen shot of the script edited in Notepad++ with all characters visible

+1

启用看到隐藏人物,这通常意味着在命令行或变量名称中有一些有趣的字符。 – MBen

+0

@MBen完成了,但问题依然存在。我也尝试删除并重新创建几次引号 – Mick

+0

它与此[问题]类似(http://stackoverflow.com/questions/20706869/powershell-is-missing-the-terminator)。 –

回答

3

这是一个与此类似question

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

在终端中使用cat filename.ps1有助于确定哪些字符不好,在编辑器中不明显。

1

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

这里是什么样子在PowerShell中所列的截图: - enter image description here