Я не уверен, но я думаю, что ваша проблема в том, что вы используете $msi
как локальную и как удаленную переменную. Варианты буксировки:
- Для переменных только для чтения вы используете ключевое слово "Using"
Подробнее см. about_remote_variables . Если вам нужно только прочитать значение из переменной, вы можете сделать следующее:
$msi = "MSI path"
Invoke-Command -ComputerName RemoteServer -ScriptBlock { Start-Process msiexec.exe -Wait -ArgumentList "/I $Using:msi /qn /passive"}
Здесь вам не нужен ArgumentList
-параметр Invoke-Command
.
- Добавить суффикс _remote к удаленным переменным
Это всего лишь стиль, который я использую в своих скриптах, чтобы различать локальные и удаленные переменные.
$msi = "MSI path"
Invoke-Command -ComputerName RemoteServer -ScriptBlock {param($msi_remote) Start-Process msiexec.exe -Wait -ArgumentList "/I $msi_remote /qn /passive"} -ArgumentList $msi
Надеюсь, это поможет.