如何在启动powershell.exe之前设置首选项@Get()
getHello(@Query() query) {
for (const queryKey of Object.keys(query)) {
console.log(`${queryKey}: ${query[queryKey]}`);
}
}
?
$ErrorView = "CategoryView"
不起作用。
答案 0 :(得分:2)
您的代码中存在严重错误。您在外部使用了4个双引号而不是两个,在内部使用了一对单引号。 [咧嘴]
这有效...
powershell.exe -command "$ErrorView = 'CategoryView' ; dir wrong.txt; pause"
在确定某些功能可以正常工作时,请删除pause
。 [咧嘴]
答案 1 :(得分:0)
补充Lee Dailey's helpful answer:正如Lee指出的那样,您的主要问题是您忽略了"
字符的 。 嵌入在您的总体"..."
命令中。
假设您正在从PowerShell的外部 调用命令,例如cmd.exe
(命令提示符):
在这种情况下,使用嵌入式单引号('...'
代替嵌入式"..."
是 > ,如Lee的回答所示,因为CategoryView
被视为 文字字符串。
方便地将'
用于嵌入式引用避免了转义的需要。
但是,如果嵌入的字符串包含 变量引用(例如$var
)或表达式(例如{{ 1}}),必须使用双引号的字符串($(Get-Date)
),因为只有双引号的字符串是 expandable (内插的)。 必须将嵌入式"..."
转义为"
。
\"
字符。必须以"
的形式转义。`"
如果由于某种原因必须从 PowerShell中调用另一个PowerShell实例,请使用脚本块 (# From cmd.exe, for instance.
C:\>powershell.exe -command "$ErrorView = \"CategoryView\"; dir wrong.txt"
),这也避免了转义的需要(并通过从调用中返回 objects 而不是仅 strings 来更好地与调用会话集成)。
{ ... }