Reputation: 27037
I need to send a simple string to a web api using Powershell, and I have to ensure the value in the HTML body has "Quotes" around it, because the content type has to be application/json.
For example:
$specialKey = "101010"
Invoke-RestMethod -Method Put `
-Uri $keyAssignmentUri `
-Header @{"content-type"="application/json"} `
-Body "$specialKey"
When I inspect this call in Fiddler, I see that the body is 101010 instead of "101010". How do I send the body value with quotes?
Upvotes: 32
Views: 56669
Reputation: 23415
Assuming you don't need to do variable substitution in your string, a simple solution is to just surround it with single quotes to make it a literal string:
$specialKey = '"101010"'
Upvotes: 13
Reputation: 3589
Replacing double quotes (") with a sequence of back-slash, backtick and double-quotes worked for me:
\`"
Example: I want to set (using the env command) an environment variable named SCOPES to the following value, then launch node app.js:
{
"email":"Grant permissions to read your email address",
"address":"Grant permissions to read your address information",
"phone":"Grant permissions to read your mobile phone number"
}
so I used:
env SCOPES="{ \`"email\`": \`"Grant permissions to read your email address\`", \`"address\`": \`"Grant permissions to read your address information\`", \`"phone\`": \`"Grant permissions to read your mobile phone number\`" }" node app.js
References: http://www.rlmueller.net/PowerShellEscape.htm
Upvotes: 16
Reputation: 671
In order to have the "Quotes", you need to provide the escape character (`) before every " which you want to print or send.
$PrintQuotesAsString = "`"How do I escape `"Quotes`" in a powershell string?`""
Write-Host $PrintQuotesAsString
"How do I escape "Quotes" in a powershell string?"
Upvotes: 54