立即启动powershell和命令

时间:2017-09-30 18:28:04

标签: powershell

如果我在powershell中这样做:

echo beep ; echo beep

打印:

beep
beep

但如果我在常规控制台中执行此操作:

powershell -command { echo beep ; echo beep }

打印:

echo beep ; echo beep

获得相同结果的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

仅支持将脚本块{ ... })内的命令列表传递给powershell -Command 执行 来自PowerShell本身,因为正在运行powershell -h会告诉您。

从PowerShell的外部,只需按原样传递命令,但最好是在双引号内,以防止cmd.exe对参数进行无意的预先解释:

powershell -command "echo beep ; echo beep"

但请注意,cmd.exe - 样式的环境变量引用(例如,%USER%)仍在预先扩展。

或者,您可以传递脚本块(字符串) [1]  &开头,调用运算符以确保脚本块的执行,但只有在您想传递参数时才需要到脚本块:

powershell -command "& { echo $Args[0]; echo $Args[0] } beep"

beep作为第一个参数传递,脚本块引用该参数为$Args[0]

暂且不说:在PowerShell中echoWrite-Output的别名,它写入成功输出流;未捕获或重定向的任何命令或表达式的输出隐式将转到输出流,因此通常不需要使用echo / Write-Output

powershell -command "& { $Args[0]; $Args[0] } beep"

[1]从内部 PowerShell,将脚本块传递给powershell -command会导致调用 PowerShell会话识别它并处理随附的命令作为传递给新会话执行的命令 从PowerShell的外部{...}是传递给新会话的字符串,  然后是新会话然后将该字符串解析为PowerShell代码。在没有显式调用的情况下自行评估脚本块,只需输出脚本块的文字内容即可解释输出;您可以通过提交确认此行为 PowerShell提示符下的{ echo beep; echo beep }