Если вы используете plink, то вы не используете PS remoting для этого, поскольку вы просто запускаете команду plink на одном из хостов PS (console / ISE / VSCode). Это не проблема PS, а как запустить и запустить в PS. Я ежедневно подключаюсь к Linux-системам без проблем, но, как вы уже заметили во второй команде, проблема с командой start.
Если вы находитесь в одной из консолей PS, вам нужно предоставить команду выполнения, а для внешнего .exe-файла вы должны привыкнуть полностью определять исполняемый файл.
Например, вот как я делаю это успешно со всеми моими Linux-блоками.
Это & (амперсанд) означает - Выполнить строку как команду. В основном то же самое, что вы делаете, вызывая cmd.exe start, но без дополнительного окна терминала.
# Using PowerShell and Plink for Linux remote management
# Example
$PlinkPath = 'D:\Tools\plink.exe'
$linuxhostname = 'SomeLinuxHostName'
$linuxusername = 'SomeLinuxUserName'
$LinuxSessionName = 'LinuxSessionNameName' # Putty Saved session name
$GetIptablesNat = & $PlinkPath -load $LinuxSessionName 'sudo -s iptables -L -nv --line-numbers -t nat';$GetIptablesNat
$GetIptablesFilter = & $PlinkPath -load $LinuxSessionName 'sudo -s iptables -L -nv --line-numbers -t filter';$GetIptablesFilter
$RestartIptablesService = & $PlinkPath -load $LinuxSessionName 'sudo -s service iptables restart';$RestartIptablesService
# Network statistics
$GetNetworkStatistics = & $PlinkPath -load $LinuxSessionName 'sudo -s netstat -tN';$GetNetworkStatistics
# Connectivity check
(
'SomeLinuxHostFQDN','SomeLinuxIPA'
) | % { Test-Connection -ComputerName $_ }
# From Linux NAT Gateway
$TestConnectivity = & $PlinkPath -load $LinuxSessionName 'sudo -s ping SomeHostIPA';$TestConnectivity
Если вы хотите, чтобы все работало в фоновом режиме, это то, для чего нужны задания PS.
Смотрите эту статью:
https://codingbee.net/tutorials/powershell/powershell-running-tasks-in-the-background
См. Также информацию о файле справки PS относительно параллельных процессов и пространств выполнения.
Get-Help -Name about_Jobs
Get-Help -Name about_Parallel
Get-Help -Name about_PSSessions
Get-Help -Name about_PSSession_Details
Get-Help -Name about_Workflows
Get-Help -Name about_WorkflowCommonParameter
Начало использования пространств выполнения PowerShell
https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/26/beginning-use-of-powershell-runspaces-part-1
Я, однако, не пробовал это с Plink.
Но есть много статей, касающихся случаев использования PS и Plink, даже для коммутаторов Cisco.
Трюки SSH PowerShell с помощью plink.exe
http://www.virtu-al.net/2013/01/07/ssh-powershell-tricks-with-plink-exe
Пример модуля PowerShell для управления хостами Linux с поддержкой SSH с использованием SMA
Это пример модуля Windows PowerShell для управления хостами Linux с поддержкой SSH. Он оборачивает инструмент Putty Plink.exe для выполнения команд SSH.
https://gallery.technet.microsoft.com/scriptcenter/Sample-PowerShell-module-8d961a1c
И, что примечательно, PS имеет модуль SSH, поэтому вам не нужно специально использовать Plink для взаимодействия с клиентами Linux.
Использование SSH с PowerShell
https://www.thomasmaurer.ch/2016/04/using-ssh-with-powershell
Шикарный SSH 2.0.2
Обеспечение функциональности SSH и SCP для выполнения команд на удаленных хостах.
https://www.powershellgallery.com/packages/Posh-SSH/2.0.2