powershell - 向外部程序发送多个命令

标签 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 事务命令。换句话说,我们需要能够像上面列出的那样发出多个命令。

最佳答案

因为 redis-cli 似乎是从 STDIN 读取输入,你可以用这样的命令字符串为它提供一个数组:

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

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

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

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

关于powershell - 向外部程序发送多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375030/

相关文章:

windows - 阻止 & 符号自动添加到从项目资源管理器放入 VSCode 控制台的目录路径之前

powershell - 逐行遍历变量

powershell - 捕获工作流中的错误

bash - korn 和 bash shell 之间的区别

redis - 仅当 Redis 存在 key 时如何进行 HSET?

powershell - Powershell while循环无法中断

svn - Powershell 源代码控制/颠覆场景。这可能吗?

linux - 如何使用 shell 脚本连接 2 个 csv 文件?

node.js - 你能在redis中保存嵌套对象吗?

linux - 服务器重启后Redis数据丢失