Error: Import DLL from run dialog

Error: Import DLL from run dialog

我似乎只有在从 运行 对话框执行以下 powershell 命令时才会遇到 DLL 导入错误。来自打开的 powershell window 的完全相同的命令执行没有问题。

生成 运行 对话命令时出错:

Powershell $k=Add-Type -MemberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr h, int n);' -Name w -PassThru

打印出以下错误:

当运行在已经打开的 powershell 中使用相同的代码时,不会返回任何错误 window:

$k=Add-Type -MemberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr h, int n);' -Name w
-PassThru;

我觉得这很令人困惑,因为我觉得这两种方法应该产生相同的结果。为什么会发生这种情况有任何逻辑推理吗?如何解决这个错误?

代码的目的是最小化 powershell window。我知道还有其他方法可以实现这一点。

欢迎来到跨不同语言嵌套字符串文字的奇妙世界。

将双引号括在您希望由 PowerShell 执行的整个命令行中,并使用反斜杠转义嵌套的双引号:

powershell "$k=Add-Type -MemberDefinition '[DllImport(\"user32.dll\")]pub...;"
#          ^                                          ^           ^          ^

附录:请注意,当从 PowerShell 控制台调用时,上述命令行将工作。在这种情况下,您需要对命令字符串中的 $" 字符进行额外的 (PowerShell) 转义:

powershell "`$k=Add-Type -MemberDefinition '[DllImport(\`"user32.dll\`")]pub...;"
#           ^                                           ^            ^