Powershell命令仅在我在ise中运行选择时才起作用

时间:2017-05-05 15:55:20

标签: powershell powershell-v2.0 powershell-v3.0

我是powershell的新手,我使用ps ise编写一个ps脚本,在另一台服务器上远程执行.exe。

当我点击ise中的运行时,脚本似乎没有做任何事情。但是,当我右键单击ps脚本中的各行代码时,我可以在ps控制台和目标服务器中看到每行代码都有效。

当我在ise中单击运行脚本或从命令行运行脚本时,我错过了什么才能使它工作?

以下是脚本的基本外观:

Enter-PSSession -ComputerName MyServer1
D:\Somefolder\On\TargetServer\theremote.exe
Exit-PSSession

我感谢您提供的任何帮助或指导。

1 个答案:

答案 0 :(得分:3)

让我解释一下。

Enter-PSsession 基本上会创建与远程计算机的交互式会话。

因此,一旦创建了会话,您就可以运行所有交互式命令从远程计算机返回结果的命令。

您应该使用invoke-command来完成工作。应该是这样的:

Invoke-Command -ComputerName MyServer1 -ScriptBlock {& 'D:\Somefolder\On\TargetServer\theremote.exe'}

现在,默认情况下它使用Windows身份验证。如果要指定任何凭据,则可以使用-Credential开关。

或者另一种方法是首先使用new-pssession创建远程会话,然后将会话存储在变量中。 最后,您可以在invoke-command中将会话指定为-SessionName

根据评论,如何传递参数(我这里只传递1个参数):

Invoke-Command -ComputerName MyServer1 -ScriptBlock { param ($param1) & 'D:\Somefolder\On\TargetServer\theremote.exe' -something $param1 } -ArgumentList "param1Value"

希望它有所帮助。