omega
omega

Reputation: 43833

How to pass strings to powershell from cmd with ampersands in values?

In windows CMD, I want to run a powershell script and pass string params, which have quotes and ampersands in the params.

U:\Desktop>PowerShell .\post "http://domain/api/app?pLanguage=en-US\"&\"pCompanyID=816" "{\"Message\":\"test message - please ignore\"}"
The string is missing the terminator: ".
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

'\"pCompanyID=816"' is not recognized as an internal or external command,
operable program or batch file.

How can I fix this issue?

Upvotes: 1

Views: 721

Answers (1)

mclayton
mclayton

Reputation: 9975

From another question on this site - How to escape ampersands, semicolons, and curly braces in command-line powershell params?

Wrap your command line strings in nested double and single quotes - e.g. "'[somestring]'".

In your specific case:

C:> powershell .\post "'http://domain/api/app?pLanguage=en-US&pCompanyID=816'" "'{\"Message\":\"test message - please ignore\"}'"

Upvotes: 1

Related Questions