在 Windows 上计算父 ssh 进程的命令行参数...

在 Windows 上计算父 ssh 进程的命令行参数...

我大量使用这种技术获取 Linux tmux 控制台。此处的目的是,Match...exec当我执行 时, 不会执行 RemoteCommand ssh host command,因此远程执行不会中断。

但是,上面链接的答案特定于 Linux ssh 客户端。我还不知道如何在 Windows 上执行此操作。

您能否编写一个 Windows 命令行,在以下情况下给出非零错误代码?父 openssh 进程只有一个命令行参数?

[编辑:这个问题已被修改,以纠正我最初的误解,即 Match Exec 是在兄弟过程。]

答案1

我认为这是部分答案。我对 PowerShell 不太熟悉,但这个命令序列给出了 PPID 命令行的字数。

$PPID = (Get-WmiObject Win32_Process -Filter ProcessId=$PID).ParentProcessId
$CMD = wmic process where "ProcessID = $PPID" get commandline /value
$WC = ($CMD | measure-object -Word).Words
$WC

如果 PPID 有超过 2 个字,则以下单行代码将返回“失败”错误级别:

if ((wmic process where "ProcessID = $((Get-WmiObject Win32_Process -Filter ProcessId=$PID).ParentProcessId)" get commandline /value| measure-object -Word).Words -gt 2) { exit 1 }

但是,考虑到嵌套引号的层数,我不知道如何将其强行塞入 ssh Match Exec。将其放入 .PS1 文件似乎会导致 ssh 在脚本退出时挂起。欢迎提出建议!

相关内容