user2486953
user2486953

Reputation:

What is @” operator?

I searched all over the internet for what this means: @”, including @ and individually.

It was in this code:

$Win32ShowWindowAsync = Add-Type –memberDefinition @” 
[DllImport("user32.dll")] 
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
“@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru

I also keep on getting this error message for the first line above:

White space is not allowed before the string terminator.

I changed to ", but no luck.

So what do those symbols mean in Powershell?

Thanks

Upvotes: 3

Views: 11788

Answers (1)

Matt
Matt

Reputation: 46710

You are looking at a here-string. The error is from a malformed here-string.

The code you have above copies and works just fine as is. The start must finish the line and the end of the here string must be alone on it's own line. Which they are in your code in the question. I can create your error by adding some spaces before the terminator "@.

$Win32ShowWindowAsync = Add-Type –memberDefinition @”
[DllImport("user32.dll")] 
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
    “@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru

I would double check the code you are actually using. Guessing you will find leading whitespace like the error is suggesting. There is a comment in the page you linked to that talks about removing that whitespace from the code. You copied and pasted from that site which had leading whitespace.

Taking a line from devcentral.f5.com

A here-string is used to embed large chunks of text inline in a script into a single string literal. This is very similar to a feature in C#, but the difference is that in PowerShell the here-string begins at the end of a line and the terminating sequence must be at the beginning of a line.

Using double quotes will allow for variable expansion whereas single quotes will not. Just like normal strings in PowerShell.

I also see smart quotes but, like you said, that didn't help when you changed them. In general keep an eye out for those.

Upvotes: 10

Related Questions