如何通过命令行在 powershell 中使用 Add-Type 以执行 VB.NET 或 C#(或 JScript.net)代码?

How I can use Add-Type in powershell through command line in order to execute VB.NET or C# (or JScript.net) code?

这是关于 Add-Type

的 MS 文档

所以我尝试通过命令行添加类型:

>powershell Add-Type -TypeDefinition "public class T{public static int Add(int a, int b){return (a + b);}}" -Language CSharp

>powershell Add-Type -TypeDefinition "@"""public class T{public static int Add(int a, int b){return (a + b);}}"""@" -Language CSharp

>powershell Add-Type -TypeDefinition "@"""public class T{public static int Add(int a, int b){return (a + b);}}"""@" -Language CSharp

>powershell Add-Type -TypeDefinition @"public class T{public static int Add(int a, int b){return (a + b);}}"@ -Language CSharp

但无论我尝试执行 returns 一个错误。是否可以通过 cmd 控制台调用 powershell 来添加类型?然后执行添加的方法?

这就是为什么你不能做你正在做的事情,文档专门说明了这一点。

这个标点称为 Here String.,它有特定的用途。

如果您在真正的 PowerShell 编辑器(ISE,VSCode)中执行此操作,请注意,将所有这些放在一行中会产生语法错误。

这里是字符串

$Source = @"
public class T
{
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}
"@

这是不正确的(将突出显示语法错误)...

$Source = @"public class T{public static int Add(int a, int b){return (a + b);}}"@

...因为这些'@""@'必须在不同的行上并且完全左对齐并且没有任何东西可以跟在同一行的第一个之后或在同一行的第二个之前

这不显示语法错误突出显示:

$Source = @"
public class T{public static int Add(int a, int b){return (a + b);}}
"@

...这可以在 PowerShell 控制台主机中完成,但不能 cmd.exe 调用 powereshell.exe。

在这种情况下,consolehost 不会像编辑器那样显示语法错误。

任何时候您在控制台主机中键入需要 CRLF 或类似内容的代码时,您都必须以这种方式键入。最后,在 cmd.exe 中执行此操作永远不会显示 PowerShell 语法错误,除非您尝试 运行 它。

这是关于完全理解 PowerShell 语法和标点符号的全部内容。

The Complete Guide to PowerShell Punctuation