PowerShell script error: the string is missing the terminator:

Mick picture Mick · May 4, 2017 · Viewed 10k times · Source

Incredibly simple powershell script...

#Server side storage copy

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

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

fails with the error

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

The strangest part is if I copy and paste the contents of the ps1 file into a PowerShell command line, it works fine !? What's going on?

Obviously I have removed my storage container name and key, you will need to assign your own Azure storage account name and api key to replicate it.

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

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

Answer

Shui shengbao picture Shui shengbao · May 4, 2017

It's similar with this question.

When you copy cmdlets from Web, maybe there are some special characters. I suggest you could copy the cmdlets to Notepad then copy to PowerShell.

It's helpful to use cat filename.ps1 in the terminal you can see determine which characters are bad, it's not obvious in the editor.