Как запустить исполняемый файл с помощью Powershell

С физического компьютера я хочу запустить исполняемый файл на удаленной виртуальной машине. Исполняемый файл уже находится на удаленной виртуальной машине. Командлет, который я использую:

$command = "c:\users\<username>\desktop\Myexecutable.exe"

Invoke-Command -ComputerName Machine98 -ScriptBlock {$command} -Credential <domain_name>\<username>

Я анонимизировал, но я уверен, что они правильные.

В командной строке Powershell нет сообщения об ошибке. И подсказка становится доступной после командлета, так что не зависает.

Я уверен, что служба WS-Management запущена и правильно настроена на удаленной виртуальной машине, потому что этот командлет работает:

enter-pssession -computername Machine98 -credential <domain_name>\<username>

Можете ли вы помочь мне найти, что не так с моим решением, или предложить другой способ достижения цели?

Большое спасибо!


person Smurf    schedule 18.09.2018    source источник
comment
Похоже, на машине, которую вы используете для выполнения команды, нет ошибки, но она может быть на удаленной машине. Есть ли журнал, который вы можете посмотреть на него? Возможно, стоит добавить Start-Transcript в ваш блок скриптов.   -  person Clayton Lewis    schedule 18.09.2018
comment
Еще один хороший ресурс для устранения неполадок — Test-Connection. Подробнее см. help Test-Connection -Full.   -  person lit    schedule 18.09.2018


Ответы (1)


$Command определяется на локальном компьютере и не будет доступен внутри блока сценария. Когда вы используете переменную внутри блока сценария, вы должны передать ее в качестве аргумента.

Invoke-Command -Computer Name -ScriptBlock {
    Param(
        [string]$Command
    )
    & $Command
} -ArgumentList $Command

Итак, здесь просто выполняется пустой ScriptBlock (поскольку переменная $Command равна нулю), поэтому ошибки нет.

person Prasoon Karunan V    schedule 18.09.2018