将多个命令发送到外部程序

时间:2015-09-03 11:59:48

标签: powershell scripting redis

我们正在尝试编写一个调用外部应用程序的PowerShell脚本 - 一个Redis客户端(redis-cli.exe) - 然后向该.exe发送多个命令。发送如下所示的单个命令没有问题:

& redis-cli -h localhost -p 6379 SMEMBERS someKey

问题是,这将启动Redis客户端,发出单个命令,关闭客户端,然后将控制权返回给PowerShell。我们需要在事务中发出多个命令。例如,以下是我们要发送给客户端的命令:

MULTI
DEL someKey
DEL someSet
EXEC

Redis客户端支持将LUA脚本字符串作为命令发送,但遗憾的是,这不支持MULTI / EXEC事务命令。换句话说,我们需要能够发出如上所列的多个命令。

1 个答案:

答案 0 :(得分:7)

由于redis-cli似乎从STDIN读取输入,您可以使用如下命令字符串为其提供数组:

'MULTI', 'EXEC' | & redis-cli -h localhost -p 6379

使用echoWrite-Output的别名)不需要将数组送入管道。

您还可以先将命令数组存储在变量中:

$cmds = 'MULTI', 'EXEC'
$cmds | & redis-cli -h localhost -p 6379