Выполнить file.ps1 на windows -machine1 с rhel-server1 с помощью sshpass, bash и PsExe c вопросы - PullRequest
0 голосов
/ 04 августа 2020

Если бы у меня были волосы, я бы снова стал лысым.

У меня 2 сервера.

windows01 linux01

На машине windows01 у меня есть GUI приложение , которое мне нужно запускать с linux01 сервера.

Скрипт называется start.ps1 на машине windows01 выглядит так: (Он размещается там, где находится исполняемый файл как приложения, так и psexe c .exe )

if((get-process "TmaApplication" -ea SilentlyContinue) -eq $Null){ 
        echo "TmaApplication not running, attempting to start"
        & .\psexec.exe -accepteula TMA.exe /u "Default User" /c y /p 5003
}

else{ 
    echo "Running"
 }

Однако, когда я запускаю следующее с сервера linux01 , я получаю следующее: (По какой-то причине он запускается с машины linux, а не просто выполняет файл start.ps1, расположенный на windows01 машина.)

[root@linux01]# ./test.sh

TmaApplication not running, attempting to start
.\psexec.exe : The term '.\psexec.exe' is not recognized as the name of a cmdlet, function, script file, or operable pr
ogram. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Program Files (x86)\redacted\redacted\redacted 1.0\redacted Application\start.ps1:3 char:9
+         .\psexec.exe -accepteula TMA.exe /u "Default User" /c y /p 50 ...
+         ~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (.\psexec.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 

Содержимое теста. sh файл:

#!/bin/bash
STP="redacted"
Server="redacted"
User="redacted"
Password="redacted"
TMAVersion="1.0"
PsExecSourceFile="/opt/tools/psexec.exe"
PsExecFileName="psexec.exe"
Test="test.ps1"


sshpass -p $Password ssh -o stricthostkeychecking=no $User@$Server 'powershell -InputFormat None -File "C:/Program Files (x86)/redacted/redacted/redacted '$TMAVersion'/redacted Application/'$Test'"'

Я очень новичок в это, и я вынужден работать с тем, что я копирую, а что нет. Кроме этого все работает нормально. Если я запустил start.ps1 прямо с машины windows01, щелкнув правой кнопкой мыши «запустить с помощью powershell» , он сделает именно то, что я хочу. Но мне нужно выполнить его с этой linux машины.

У меня есть полный контроль root / admin над средой linux и windows, когда дело касается уровня ОС. Но я предпочитаю ограничивать сторонние приложения. Боюсь, что любой не-открытый исходный код - это не вариант продвижения вперед, если он не выпущен напрямую от Microsoft или RedHat

1 Ответ

0 голосов
/ 04 августа 2020

Можно ли установить Powershell 7 на машину linux? https://github.com/powershell/powershell

Затем вы можете использовать PSSessions для подключения к машине windows через PowerShell.

$session = New-PSSession -HostName UbuntuVM1 -UserName TestUser
Enter-PSSession $session

Подробнее здесь: https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/ssh-remoting-in-powershell-core?view=powershell-7

...