注释掉的变量给出了PS终端错误(#$ Var = error)

时间:2018-01-30 10:41:40

标签: powershell visual-studio-code comments

我遇到了以最新版本开头的VSCode终端问题。 它可能是一个错误或只是我错过的设置,因此我想在将其报告为错误之前询问您。

Version 1.19.3
Commit 7c4205b5c6e52a53b81c69d2b2dc8a627abaa0ba
Date 2018-01-25T10:36:34.867Z
Shell 1.7.9
Renderer 58.0.3029.110
Node 7.9.0
Architecture x64

我有一个具有不同功能的文件,我只是用于Office365管理任务。

我总是在VSCode中打开文件并运行它( F5 ),然后我从另一个文件中调用这些函数。 但是随着最新的VSCode升级,当我运行文件时,我在终端窗口中收到了这些错误。错误指向我已注释掉的行(#)。 在每个函数中,我首先注释了对我使用的每个变量的解释,如:#$UserName = the Name of the user。 如果我在comment-char $之后删除#符号,那么该行的错误就会消失。

问题不在于我没有使用正确的基于注释的帮助语法。 事实上,我已经注释掉了我不使用的变量,并且当我在VSCode中运行( F5 )文件时会引发错误。

有没有人解释为什么我的代码中没有#$Var

At C:\Users\anno\OneDrive för företag\Powershell\Script\Anslut_till_O365.ps1:44 char:3
+     #$UPN: anvnamn & epostadress
+      ~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name
character. Consider using ${} to delimit the name.

At C:\Users\anno\OneDrive för företag\Powershell\Script\Anslut_till_O365.ps1:45 char:3
+     #$Firstname: Förnamn
+      ~~~~~~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name
character. Consider using ${} to delimit the name.

At C:\Users\anno\OneDrive för företag\Powershell\Script\Anslut_till_O365.ps1:46 char:3
+     #$Lastname: Efternamn
+      ~~~~~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name
character. Consider using ${} to delimit the name.

At C:\Users\anno\OneDrive för företag\Powershell\Script\Anslut_till_O365.ps1:47 char:3
+     #$Title: Medlemsnr inkl filialnrâ,¬
+      ~~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name
character. Consider using ${} to delimit the name.

下面是错误抱怨的函数中的第一行。

Function CreateNewE1User {
    #$UPN: anvnamn & epostadress
    #$Firstname: Förnamn
    #$Lastname: Efternamn
    #$Title: Medlemsnr inkl filialnrEUR
    #$Displaynamn: Visningsnamn (Kedja Ort (Butiksnamn), Förnamn Efternamn KEDJA
    #$PWD: Tillfälligt lösenord
    #param ($UPN,$Firstname,$Lastname,$Title,$Displaynamn,$PWD,$SMTP)

    Param(
        $UPN,
        $Firstname,
        $Lastname,
        $Title,
        $Displaynamn,
        $PWD='Password01'
    )

    #skapa ny användare
    New-MsolUser -UserPrincipalName $UPN -FirstName $Firstname -LastName $Lastname -Title $Title -DisplayName $Displaynamn -UsageLocation "SE" -PasswordNeverExpires $false
}

2 个答案:

答案 0 :(得分:0)

您遇到的问题是PowerShellEditorService。这是VS Code中PowerShell扩展使用的引擎,也是PS集成终端的运行方式。

我无法复制您获得的错误。我正在使用最新版本的VS Code(1.19.3)和PS Extension(1.5.1)。如果您更新并仍然遇到问题,可以将其提交给GitHub仓库以找出它在您的安装上可能会这样做的原因。我的猜测是,即使你有评论,它仍然会解析这条线。如果您阻止评论整个部分,它可能会导致引擎跳过尝试解析每一行。

答案 1 :(得分:0)

添加我的评论作为答案,因为它确实为OP工作。

您认为这是环境问题吗?

意味着系统上的某些内容已更改/已损坏。

我说这是因为,我已经看到这种情况发生了,而且发生在我身上。代码在一个系统上运行良好,在另一个系统上运行失败,

我们说话的时候有这个问题。你有其他系统可以尝试吗?

关注您的问题和我的相关评论。我的发现是最新的VSCode更新更新了默认的Keybindings,从而导致与我的自定义用户键绑定冲突。一旦我删除了与新的默认键绑定冲突的自定义键绑定,所有内容都恢复正常。

故事的道德,注意VSCode更新并真正阅读ReadMe文件。特别是如果你习惯定制。