如何从远程服务器上的主脚本调用子脚本

时间:2014-09-10 13:04:17

标签: powershell

我在使用远程服务器上的powershell从主脚本调用子脚本时遇到问题 我有一个主要的脚本,它是调用1.ps1 另一个脚本叫做2.ps1

以下是脚本

1.ps1 contains this code &("C:\Users\test\Desktop\remotely run scripts\2.ps1")
2.ps1 contains this code new-item -type file c:\itworksagain.txt

我按如下方式运行命令:

invoke-command -computer "remoteServer" -filepath "C:\Users\test\Desktop\remotely run scripts\1.ps1"

我收到错误

The term 'C:\Users\test\Desktop\remotely run scripts\2.ps1 is not recognized as the name of a cmdlet, function, ...

1 个答案:

答案 0 :(得分:0)

我之前应该注意到这一点。脚本中有以下内容

&("C:\Users\test\Desktop\remotely run scripts\2.ps1")

该行中的括号告诉PowerShell运行一个名为"C:\Users\test\Desktop\remotely run scripts\2.ps1"的子表达式,它不是cmdlet,exe ....等。 我认为如果将行更改为以下内容,可能会解决您的问题。

& "C:\Users\test\Desktop\remotely run scripts\2.ps1"

从评论中更新

你的第一个脚本调用第二个脚本。 invoke命令在远程服务器上运行第一个命令。在远程服务器上执行的脚本调用第二个脚本。呼叫始发于远程服务器,因此呼叫相对于该服务器。它正在远程服务器上查找2.ps1。您需要将该脚本移动到中心位置,然后使用powershell支持的UNC路径从第一个脚本中调用它。对于测试,您可以将2.ps1移动到远程服务器,它应该可以工作。