如何在Windows中远程执行脚本?

我想有一个Windows 2003服务器启动一个脚本来启动另一台Windows Server 2008计算机上的另一个脚本。

我被告知Powershell可以做到这一点,这很好,但我需要更多的具体细节。

有没有人有任何提示呢?

谢谢!

Solutions Collecting From Web of "如何在Windows中远程执行脚本?"

来自SysInternals的psexec

查看AT命令的语法。 您可以使用它来安排进程在远程计算机上运行。

AT命令安排命令和程序在指定的时间和日期在计算机上运行。 Schedule服务必须运行才能使用AT命令。

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]] AT [\\computername] time [/INTERACTIVE] [ /EVERY:date[,...] | /NEXT:date[,...]] "command" \\computername Specifies a remote computer. Commands are scheduled on the local computer if this parameter is omitted. id Is an identification number assigned to a scheduled command. /delete Cancels a scheduled command. If id is omitted, all the scheduled commands on the computer are canceled. /yes Used with cancel all jobs command when no further confirmation is desired. time Specifies the time when command is to run. /interactive Allows the job to interact with the desktop of the user who is logged on at the time the job runs. /every:date[,...] Runs the command on each specified day(s) of the week or month. If date is omitted, the current day of the month is assumed. /next:date[,...] Runs the specified command on the next occurrence of the day (for example, next Thursday). If date is omitted, the current day of the month is assumed. "command" Is the Windows NT command, or batch program to be run. 

最简单的方法是使用两步

一个。 将cygwin安装到远程PC上

湾 运行ssh hudson @ mcs'/cygdrive/c/path_to_script.bat'

说到PsExec ,我强烈建议使用Cygwin / OpenSSH来代替。

SSH有很多优点(比如PsExec甚至定制服务)。
例如,尝试使用PsExec并实现这些bash / ssh命令行所执行的操作:

 ssh user@remotehost "find . -name something" 2> all.errors.txt ssh user@remotehost "grep -r something ." if [ "$?" == "0" ] then echo "FOUND" else echo "NOT FOUND" fi 

祝你好运!

  • SSH将(!)远程stdout / stderr /退出状态传输到本地 shell进行检查
    (杀手功能和将远程执行集成到本地脚本逻辑的通用要求)

  • Cygwin / OpenSSH提供标准的 POSIX shell环境
    (高效的时间投入,基础工具,跨平台准备,兼容习惯等)

  • 您仍然可以/始终运行所有本机 Windows应用程序
    (包括由cmd处理器自动执行*.bat文件)

  • 您可以使用公钥配置无密码身份验证
    (考虑无人值守的自动化任务)


小费

有一个要求我最初有问题:
后台sshd服务必须在用户的图形会话中执行应用程序
(使桌面环境中出现应用程序窗口)。

我接受的解决方案是直接在用户的GUI会话中运行sshd服务
(用户登录时自动启动,请点击链接查看配置文件的变化):

 /usr/sbin/sshd -f /home/user/sshd_config 

http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_22959948.html接受的解决方案是:

我提供的是一个脚本,需要参数…在这种情况下,它需要4)1)服务器:如果你传递服务器,它只会做一个服务器2)列表:您可以提供服务器的列表文件。 3)服务:你要修改的服务的名称4)详细:这里不使用。

我确实有一些错误,我在下面的代码中改变了。 要将代码剪切/粘贴到名为Set-RemoteService.ps1的文件中。 确保设置你的执行策略来运行脚本…它不会默认。 你可以通过使用set-executionpolicy cmdlet来实现。 PS> Set-Executionpolicy“RemoteSigned”运行您执行的脚本PS> C:\ PathToScript \ Set-RemoteService.ps1 -list c:\ serverList.txt -service“DHCP”

#########################参数($ server,$ list,$ service,[switch] $ verbose)

if($ Verbose){$ VerbosePreference =“Continue”} if($ list){foreach($ srv in(get-content $ list)){$ query =“Select * from Win32_Service where Name ='$ service'”$ myService = get-WmiObject -query $ query -computer $ srv $ myService.ChangeStartMode(“Automatic”)$ myService.Start()}} if($ server){$ query =“Select * from Win32_Service where Name ='$ service '“$ myService = get-WmiObject -query $ query -computer $ server $ myService.ChangeStartMode(”Automatic“)$ myService.Start()}