Invoke-Command вызывает ошибку сценария сервера

У меня есть этот скрипт на клиентском компьютере, который пытается запустить скрипт с серверного компьютера:

try {
      $s = New-PSSession -ComputerName "name" -Authentication CredSSP -Credential $credential
      Enter-PSSession -Id $s.Id
      Set-ExecutionPolicy ByPass -Scope CurrentUser
      Invoke-Command -Session $s -FilePath c:\release1.ps1
} catch {
      Write-Error "Error occurred: " $_.Exception.ToString()
} finally {
      Exit-PSSession
      Remove-PSSession $s }

скрипт на сервере примерно такой

Set-Alias vmrun "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" Start-Process -NoNewWindow -FilePath vmrun -ArgumentList " -T ws revertToSnapshot M:\myvm.vmx Release1"

но я получил ошибку

Ошибка записи: невозможно найти позиционный параметр, который принимает аргумент «System.Management.Automation.ItemNotFoundException: не удается найти путь» C:\release1.ps1, поскольку он не существует.


person Salvatore Di Fazio    schedule 24.04.2013    source источник
comment
-FilePath необходимо указать путь к файлу на локальном компьютере. C:\release1.ps1 на локальном компьютере или на удаленном?   -  person Nate Hekman    schedule 24.04.2013
comment
файл находится на удаленном компьютере   -  person Salvatore Di Fazio    schedule 24.04.2013


Ответы (1)


-FilePath необходимо указать путь к файлу на локальном компьютере. Файл читается локально, а затем передается на удаленный компьютер в виде блока кода.

См. http://technet.microsoft.com/en-us/library/hh849719.aspx:

Запускает указанный локальный сценарий на одном или нескольких удаленных компьютерах. Введите путь и имя файла сценария или передайте путь сценария в Invoke-Command. Сценарий должен находиться на локальном компьютере или в каталоге, к которому у локального компьютера есть доступ. Используйте параметр ArgumentList, чтобы указать значения параметров в сценарии.

Решение состоит в том, чтобы поставить release1.ps1 на локальный компьютер. Или, если он должен быть на удаленном компьютере, поместите его в общую папку, доступную для локального компьютера, и получите доступ к ней с помощью пути UNC.

Invoke-Command -Session $s -FilePath \\name\share\release1.ps1
person Nate Hekman    schedule 24.04.2013