Powershell 运行过程输出在单独的窗口中显示每一行

Powershell 运行过程输出在单独的窗口中显示每一行

我有以下 powershell 脚本,用于在我的 3 台服务器上远程运行 Plink 命令(我拥有所有正确的权限)

$KAFKA_PATH = "/opt/kafka"
$KAFKA_PROP_FILE = $KAFKA_PATH + "/config/server.properties"
$ZK_PROP_FILE = $KAFKA_PATH + "/config/zookeeper.properties"
$KAFKA_START = $KAFKA_PATH + "/bin/kafka-server-start.sh"
$ZK_START = $KAFKA_PATH + "/bin/zookeeper-server-start.sh"
echo Y | plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret1server -t "bash $ZK_START $ZK_PROP_FILE &"
timeout /t 5                                                                                            
echo Y | plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret2server -t "bash $ZK_START $ZK_PROP_FILE &"
timeout /t 5                                                                                                                                 
echo Y | plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret3server -t "bash $ZK_START $ZK_PROP_FILE &"
timeout /t 10                                                                                            
echo Y | plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret1server -t "bash $KAFKA_START $KAFKA_PROP_FILE &"
timeout /t 5                                                                                             
echo Y | plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret2server -t "bash $KAFKA_START $KAFKA_PROP_FILE &"
timeout /t 5                                                                                             
echo Y | plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret3server -t "bash $KAFKA_START $KAFKA_PROP_FILE &"

但我无法正确查看日志,而且其中一些日志似乎冻结了,导致后续日志无法正常运行。我只想让每个 plink 命令在单独的窗口中运行,这样我就可以看到每个命令出错或正常运行。我理解 & 符号表示我正在将其守护进程化,但没关系,如果我需要查看控制台输出,我可以将其删除。

任何帮助将不胜感激。

谢谢,

答案1

嗯...我只能说我自己很傻。

我不明白的是,我希望它作为一个命令(远程/本地无关紧要),所以它被视为一个命令。当我执行以下操作时,我看到一个带有控制台输出的新窗口

echo Y | cmd /c start plink -i $HOME\Documents\keys\authorized_key_priv.ppk secret1server -t ""bash $KAFKA_START $KAFKA_PROP_FILE ""&"""

它按预期工作。但这可能不是正确的解决方案?

答案2

看看此讨论中的信息是否能给你其他想法。

Windows 到 Linux:在远程计算机上以用户进程 (作为 bkgrnd) 的形式执行 shell 脚本

尽管你的目标与 OP 的目标有些不同。

相关内容