Invoke-Command调用服务器脚本错误

时间:2013-04-24 14:20:27

标签: powershell powershell-remoting

我在客户端计算机中有这个脚本试图从服务器计算机运行脚本:

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"

但是我收到了错误

  

Write-Error:找不到接受参数'System.Management.Automation.ItemNotFoundException的位置参数:不能    找到路径'C:\ release1.ps1',因为它不存在。

1 个答案:

答案 0 :(得分:0)

-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