$path
- это строка.PowerShell просто выводит пустые строки вместо их исполнения, в отличие от CMD или bash.Используйте оператор вызова (&
):
& "$path"
или Start-Process
:
Start-Process cmd.exe -ArgumentList '/c', $path -NoNewWindow -Wait
, чтобы PowerShell выполнял строку в качестве команды.Поскольку вы говорите, что запускаете msiexec.exe
из пакетного сценария, может потребоваться использование последнего.
Кроме того, у вас есть проблема с областью действия.Переменная $path
внутри блока сценария отличается от переменной глобальной области видимости.Вы можете уменьшить это с помощью спецификатора области действия using:
:
Invoke-Command -Computer testserver -Scriptblock { & "$using:path" }
или путем передачи $path
в качестве аргумента блоку сценария:
Invoke-Command -Computer testserver -Scriptblock { & "$($args[0])" } -ArgumentList $path