Передача файла через Netcat в качестве фонового задания в Powershell - PullRequest
0 голосов
/ 19 октября 2018

У меня 2 компьютера, 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

Но когда я изменяюкоманда к следующему я не получаю ошибок, она запускается в фоновом режиме, но по-прежнему нет подключения: (я заметил, что 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 голосов
/ 19 октября 2018

Вы можете попробовать запустить процесс

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

, если вы знаете, как сделать это в cmd ниже. Опции могут работать
start ./netcat32.exe -ArgumentList "..." -nonewwindow

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

...