Hear, Hear for Here-Strings

Running commands in PowerShell that require a format that will not run natively in PowerShell could be a difficult task, or can it? PowerShell provides a way to store, for example, a JSON as a string, enter here-string. A here-string is a single or double quoted string in which the quotation marks are interpreted literally. An example would be invoking a Rest API that requires a JSON body. Lets take a look at an example and see how here-strings work.

Trying to store JSON in a variable will return the following error:

Oh man… What happened? PowerShell does not understand what is being done and throws an error for an unexpected token. Lets declare this as a here-string by using @' at the start and end of the JSON variable.

Great! No errors were thrown, but… Why?

Notice the @' at the beginning and end, this tells PowerShell to create a here-string and store this string in a variable. Also, a rule to follow: the @' must be on their own line at the start and end of the declaration or the here-string will not be declared.

We can also store variables in a here-string, but that requires double quotes after the @. The same rules apply as using single quoted here-strings.

Now that we built our here-string, we can now invoke a Rest API and do something with it. This will help when a vendor supplies a JSON payload to be used in a Rest API, all that needs to be done is substitute your values in a here-string and invoke the Rest API. As always, practice makes perfect, try running examples in the console before running in a production environment. Here-strings will save you some lines of code and time when building your PowerShell scripts.

To learn about here-strings, visit Microsoft’s documentation on quoting rules.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-6

Chris Liquori – Twitter: @pwshliquori

About pwshliquori

Hi, I’m Chris. I am not a programmer or developer, I am a scripter that enjoys PowerShell and a glass of bourbon. 5 years deep into PowerShell, my primary focus is to automate pretty much anything I don’t like to do manually. Follow me on twitter - @pwshliquori

One thought on “Hear, Hear for Here-Strings

Comments are closed.