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

jak*_*don 11 powershell scripting redis

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

& redis-cli -h localhost -p 6379 SMEMBERS someKey
Run Code Online (Sandbox Code Playgroud)

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

MULTI
DEL someKey
DEL someSet
EXEC
Run Code Online (Sandbox Code Playgroud)

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

Ans*_*ers 7

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

'MULTI', 'EXEC' | & redis-cli -h localhost -p 6379
Run Code Online (Sandbox Code Playgroud)

将数组馈入管道不需要使用echo(别名Write-Output).

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

$cmds = 'MULTI', 'EXEC'
$cmds | & redis-cli -h localhost -p 6379
Run Code Online (Sandbox Code Playgroud)