什么是@“运营商?

时间:2015-05-02 23:11:43

标签: powershell syntax

我在互联网上搜索了这意味着什么:@”,包括@

这是code

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

我还继续收到上面第一行的错误消息:

White space is not allowed before the string terminator.

我将更改为",但没有运气。

那么这些符号在Powershell中意味着什么?

由于

1 个答案:

答案 0 :(得分:8)

您正在查看here-string。错误来自格式错误的here-string。

您上面的代码复制并且工作正常。开始必须完成该行,并且此字符串的结尾必须单独在其自己的行上。它们在您的问题代码中。我可以通过在终结符"@之前添加一些空格来创建错误。

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

我会仔细检查您实际使用的代码。猜猜你会发现错误所暗示的领先空白。您链接到的页面中有一条评论说明了从代码中删除该空格。您从具有前导空格的该站点复制并粘贴。

devcentral.f5.com

取一条线
  

here-string用于将脚本中的大块文本嵌入到单个字符串文字中。这与C#中的一个特性非常相似,但不同之处在于,在PowerShell中,here-string从一行开始,终止序列必须在一行的开头。

使用双引号将允许变量扩展,而单引号则不允许。就像PowerShell中的普通字符串一样。

我也看到了聪明的引语,但是,就像你说的那样,当你改变它们时并没有帮助。一般来说,请留意这些。