通过Netcat传输文件作为Powershell中的后台作业

时间:2018-10-18 22:18:39

标签: powershell netcat

我有2台PC,其中1台正在监听连接,另一台正在尝试发送文件。

$ dir 是文件

“ $ dir.zip” 是压缩的$ dir文件。

我成功运行了该命令。

Get-Content "$dir.zip" | .\Netcat32.exe serveo.net PORT

但是,我想在后台运行它,以便可以运行其他命令。

我按照Microsoft指南运行作业,并发现AsJob和Start-Job

此命令已成功,但未在后台运行:

Invoke-Command -ScriptBlock {Get-Content "$dir.zip" | .\Netcat32.exe serveo.net PORT}

但是,当我在行的末尾添加-AsJob标记...时:

Invoke-Command -ScriptBlock {Get-Content "$dir.zip" | .\Netcat32.exe serveo.net PORT} -AsJob

我收到此错误:

Invoke-Command : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:1

    + Invoke-Command -ScriptBlock {Get-Content "$dir.zip" | .\Netcat32.exe se ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
        + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand

但是当我将命令更改为以下命令时,我没有收到任何错误,它在backgorund中运行,但仍然没有连接:(我注意到ComputerName默认为localhost)

Invoke-Command -ComputerName localhost -ScriptBlock {Get-Content "$dir.zip" | .\Netcat32.exe serveo.net 55558} -AsJob

此命令没有返回错误,在后台运行,但是没有建立连接:

Start-Job -ScriptBlock {Get-Content "$dir.zip" | .\WinGid.exe serveo.net PORT}

也尝试过此操作,以bg运行,但未建立TCP连接:

Start-Job -ScriptBlock { invoke-Command -ScriptBlock { Get-Content "$dir.zip" | .\WinGid.exe serveo.net PORT } }

1 个答案:

答案 0 :(得分:0)

您可以尝试启动过程

start powershell -Argumentlist "Get-Content $dir.zip | .\Netcat32.exe serveo.net PORT" -noNewWindow

如果您知道如何在cmd中执行以下操作,则选项可能有效
 start ./netcat32.exe -ArgumentList "..." -nonewwindow

start-job {cmd /c "netcat32 ..."}