【问题标题】:get Powershell to put Start-Process ssh.exe in background让 Powershell 将 Start-Process ssh.exe 置于后台
【发布时间】:2021-01-02 09:12:30
【问题描述】:

我正在使用下面的这个 powershell 脚本,我将我在网上找到的代码拼凑在一起,它在大多数情况下都有效。它只需要使用 if 条件在主机上尝试两个可用的 ssh 端口,然后在成功后启动 mstsc.exe。我想解决一些问题:

  1. 为什么 -NoNewWindow 参数在第一个实例中起作用,但在 else 块中不起作用?
  2. 为什么我必须依靠 Start-Sleep 在 ssh.exe 进入后台后运行任何行。如果我不使用 Start-Sleep,似乎 mstsc.exe 进程启动得太早或根本没有启动,因为它正在等待 ssh.exe 完成。如果您将 -v 添加到 ssh,您会看到它确实以“分叉到后台”完成,这已经完成但技术上尚未完成。

是否有任何类似于使用 & 的 Linux bash 解决方法?

谢谢!


$server = "152.306.2.20"
$port1 = 443
$port2 = 222
$user = Read-Host -Prompt 'Enter your username'
Write-Host "Trying $port1 ..."
$connection = New-Object System.Net.Sockets.TcpClient ($server, $port1)
if ($connection.Connected) {
    Write-Host "Port 222 available, establishing SSH connection with xrdp tunnel"
Start-Process -NoNewWindow ssh.exe -ArgumentList "-p $port1", '-Nf', "-l $user", '-L 3929:127.0.0.1:3929', "$server"
Start-Sleep -s 10
Write-Host "Opening remote desktop on localhost:3929"
Start-Sleep -s 2
Start-Process mstsc.exe -ArgumentList "/v:127.0.0.1:3929"
}
else {
Write-Host "Port 222 unavailable, establishing SSH connection with xrdp tunnel on alternate port"
Start-Process -NoNewWindow ssh.exe -ArgumentList "-p $port2", '-Nf', "-l $user", '-L 3929:127.0.0.1:3929', "$server"
Start-Sleep -s 10
Write-Host "Opening remote desktop on localhost:3929"
Start-Sleep -s 2
Start-Process mstsc.exe -ArgumentList "/v:127.0.0.1:3929"
}

【问题讨论】:

  • 为什么不直接使用Start-Process -NoNewWindow 而不是ssh.exe -p $port1 -Nf -l $user -L 3929:127.0.0.1:3929 $server?
  • 这是我最初的,但是在它进入后台后它从未进入下一行。我玩弄 -Wait 并没有得到我想要的,所以我想如果我使用 Start-Process 和所有这些参数,我可能会有更多的控制权。它仍然不能完全按照我想要的方式工作,所以我求助于使用 Start-Sleep 来加载 mstsc.exe。 OpenSSH 说 -N 将其置于后台,但它永远不会像在 Linux 中那样被置于后台。 Powershell 仍然等待指令结束,然后再转到下一行并启动 mstsc.exe。

标签: powershell openssh


【解决方案1】:

糟糕的问题 #1 只是因为我是从 Powershell 编辑器运行的,所以这不是问题。问题 #2 仍未解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-15
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多