10

我想让 Windows 2003 服务器触发一个脚本,以在单独的 Windows Server 2008 计算机上触发另一个脚本。

有人告诉我 Powershell 可以做到这一点,这很好,但我需要更具体的细节。

有人对此有任何提示吗?

谢谢!

4

5 回答 5

14

来自 SysInternals 的psexec

于 2009-05-14T01:46:23.433 回答
6

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

AT 命令安排命令和程序在指定的时间和日期在计算机上运行。必须运行计划服务才能使用 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.
于 2009-05-14T01:33:37.553 回答
4

最简单的使用方法将分两个步骤

一个。将cygwin安装到远程PC

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

于 2013-11-25T13:42:33.597 回答
2

说到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 应用程序(包括处理器
    自动执行*.bat文件)cmd

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


小费

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

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

/usr/sbin/sshd -f /home/user/sshd_config
于 2013-05-23T17:23:17.000 回答
0

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

我提供的是一个带有参数的脚本......在这种情况下,它需要 4 个。 1)服务器:如果您传递 -server 它只会执行该服务器 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() }

于 2009-05-14T01:31:05.717 回答