如何在启动powershell.exe之前设置首选项`$ ErrorView =“ CategoryView”`

时间:2019-03-07 16:35:51

标签: windows powershell

如何在启动powershell.exe之前设置首选项@Get() getHello(@Query() query) { for (const queryKey of Object.keys(query)) { console.log(`${queryKey}: ${query[queryKey]}`); } }

$ErrorView = "CategoryView"不起作用。

2 个答案:

答案 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中调用另一个PowerShell实例,请使用脚本块 # From cmd.exe, for instance. C:\>powershell.exe -command "$ErrorView = \"CategoryView\"; dir wrong.txt" ),这也避免了转义的需要(并通过从调用中返回 objects 而不是仅 strings 来更好地与调用会话集成)。

{ ... }