我是powershell的新手,我使用ps ise编写一个ps脚本,在另一台服务器上远程执行.exe。
当我点击ise中的运行时,脚本似乎没有做任何事情。但是,当我右键单击ps脚本中的各行代码时,我可以在ps控制台和目标服务器中看到每行代码都有效。
当我在ise中单击运行脚本或从命令行运行脚本时,我错过了什么才能使它工作?
以下是脚本的基本外观:
Enter-PSSession -ComputerName MyServer1
D:\Somefolder\On\TargetServer\theremote.exe
Exit-PSSession
我感谢您提供的任何帮助或指导。
答案 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"
希望它有所帮助。