利用psexec.exe部署MSN

情景:     公司客户端电脑加入新域后,域用户账户属于本地Power Users组成员。在管理上有所好转,但部分允许范围内的的软件也受到影响,如Power Users权限的用户无法安装MSN。 思路及试验过程: 过程一:     想利用msn.exe /c /T:c:\msn 释放出msnmsgs.msi文件,然后利用组策略发布。失败,无论是指派还是发布,除了报告安装时发生严重错误外没有任何有价值的提示。用管理员身份直接运行msnmsgs.msi文件是可以正确安装的,说明该msi文件本身没有什么问题。原因未知,放弃该思路。 过程二:     利用psexec.exe远程批量的安装MSN。创建msnSetup.bat内容如下(虚线内),代码是连在一起的,并未分行。-------------------------------------------- psexec.exe @pclist.txt -u administrator -p 123 -c C:\msn.exe /C:"msiexec.exe /i MsnMsgs.msi /qb-! IAGREE='' ADDEXPLORERTOOLBAR='' SETSEARCHENGINE='' SETHOMEPAGE=''" -------------------------------------------- msnSetup.bat与安装程序等均放在同一个文件夹下,以下是命令的相关解释 psexec.exe 的参数含义 @file    PsExec将依次对文件内的每一台计算机执行命令。这里我创建了pclist.txt,里面包含了客户端计算机名。 -u    用户名(一般为目标计算机的管理员帐号) -p    密码 -c    复制指定的程序到远程计算机然后执行。注:执行后该文件会自动删除。 msn.exe 的参数含义。见图1  您所在的用户组无法下载或查看附件图1 msiexec.exe 的参数含义。见图2  您所在的用户组无法下载或查看附件图2 IAGREE=''    接受MSN安装时显示的协议 ADDEXPLORERTOOLBAR=''   不在IE上安装工具栏 SETSEARCHENGINE=''  不安装搜索栏 SETHOMEPAGE=''  不改变IE默认首页设置 小结:     全新安装MSN没有任何问题。     MSN7.5也能正常升级到MSN8.0。     MSN8.0却无法正常升级到MSN8.1,升级安装后版本显示仍为8.0。原因未知。 附: pclist.txt (虚线内为该文件的正文。每行写入1个计算机名,依次类推)----------------------------- xp1 xp2 xp3 ----------------------------- 卸载由msiexec安装的软件也非常方便,这些软件都有自己的Product ID,通过msiexec可以静默卸载。(内容为一行,无回车。)------------------------------------------------- psexec.exe @pclist.txt -u administrator -p 123 msiexec /qn /x {2CEFF5C7-9DBB-4F3B-B19A-902BA383BE17} ------------------------------------------------- MSN部分版本的Product ID MSN Messenger 8.0.0812\MsnMsgs.msi  {2CEFF5C7-9DBB-4F3B-B19A-902BA383BE17} MSN Messenger 8.1.0106\MsnMsgs.Msi  {8F587FC8-2150-44DE-913B-7968EC81A47B} MSN Messenger 8.1.0178\MsnMsgs.Msi  {D7A2654B-BE52-489F-8FCD-EFCC67FDF007}
****************************
使用方法及说明:
  根据实际局域网ip情况
  修改auto.bat文件中的ip即可,请把所需要复制的文件和rpclink.bat、auto.bat放在同一目录下,
  运行auto.bat文件即可,详细命令帮助请参考windows 帮助文件中的"windows
  2000命令参考"
  如下2个批处理组合实现远程复制KB835732.exe(微软震荡波补丁)和定时后台执行补丁文件
  ---------------------------------------
  rpclink.bat(批处理文件1)
  @echo off
  echo "准备ping %1"
  ping %1 -n 1 -l 2 | find "Request timed out" || goto linkipc
  rem 为了防止目标主机没有开启或网络故障造成的ipc连接时间过长,故使用_
  rem 了ping命令,一旦发觉ping命令返回"Request timed out" 程序就跳转_
  rem 到errping程序会同时会生成报告文件"无法ping通的终端"以_
  rem 便记录相应主机.如果未返回"Request timed out"字符传,程序跳转_
  rem
  到"linkipc","||"命令作用为"只有该符号前面的命令失败,才能运行符号后面的命令."
  goto errping
  :linkipc
  echo "已成功ping通 %1"
  net use ]\%1ipc$ "管理员密码" /user:administrator || goto erripc
  rem 使用net use 命令实现ipc$连接,请更改相应的管理员密码即可
  echo 终端 %1 ipc成功连接>>ipc连接成功
  echo "准备copy KB835732.exe"
  echo "远程安装KB835732.exe补丁"
  psexec.exe %1 -c KB835732.exe -z -q
  net use ]\%1ipc$ /del
  echo 终端 %1 顺利完成任务>>顺利完成任务
  goto end
  :errping
  echo "无法ping 通 %1 ,请检查网络">>无法ping通的终端
  echo "无法ping 通 %1 ,请检查网络"
  rem pause 可以考虑使用pause命令 以便在程序出现问题的时候调试.
  goto end
  :erripc
  echo "终端 %1 ipc连接失败,请检查admin密码">>ipc连接失败
  echo "终端 %1 ipc连接失败,请检查admin密码"
  rem pause
  goto end
  :errcopy
  echo "终端 %1 copy 文件失败">>copy文件失败
  echo "终端 %1 copy 文件失败"
  rem pause
  goto end
  :errat
  echo "终端 %1 at命令失败">>at命令失败
  echo "终端 %1 at命令失败"
  rem pause
  :end
  ----------------------------------------------
  auto.bat (批处理文件2)
  for %%B in (1 2 3 4 5 6) do rpclink.bat 192.168.0.%%B
  rem 处理192.168.0.1-192.168.0.6的主机
  ----------------------------------------------
  备注:
  rpclink.bat文件稍加更改后就能实现"批量禁止用户Messenger服务"
  net use ]\%1ipc$ "admin密码" /user:administrator
  sc.exe \%1 stop Messenger
  sc.exe \%1 config Messenger start= disabled
  net use ]\%1ipc$ /del
  rem win2000用户可以win2003 system32目录下找到sc.exe文件
******************************************************
 本来还想说一下用at远程运行程序失败的原因,但考虑到at的成功率不是很高,问题也很多,在这里就不提它了(提的越多,用的人就越多),而是推荐大家用psexec.exe远程运行程序,假设想要远程机器执行本地c:\xinxin.exe文件,且管理员为administrator,密码为1234,那么输入下面的命令:
  psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe
  如果已经建立ipc连接,则-u -p这两个参数不需要,psexec.exe将自动拷贝文件到远程机器并运行。


psexec
  简介

  实用工具(如 Telnet)和远程控制程序(如 Symantec 的 PC Anywhere)使您可以在远程系统上执行程序,但安装它们非常困难,并且需要您在想要访问的远程系统上安装客户端软件。PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。


  注意:某些反病毒扫描程序会报告其中的一个或多个工具感染了“远程管理”病毒。这些 PsTools 都不带病毒,但是如果病毒使用了这些工具,则它们可能触发病毒通知。

PsExec是免费的PsTools工具集的一部分,用户可以从微软的TechNet 站点下载。其使用方法是在要启动的目标程序前面加上如下的字符串:

          "c:\windows\system32\psexec.exe" -l -d

虽然此程序目的是在远程计算机上启动程序,用户可以利用命令行开关来以受限用户的身份来运行任何应用程序。-L开关限制(即limit)应用程序的特权。-D开关使这个命令窗口在程序启动时消失(即disappear)。


  安装
  只需将 PsExec 复制到可执行路径。键入“psexec”可显示其使用语法。
  PsExec 可在 Windows Vista、NT 4.0、Win2K、Windows XP 和 Server 2003(包括 64 位版本的 Windows)上运行。
  用法:
  用法:psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]
  computer
  指示 PsExec 在指定的一台或多台计算机上运行应用程序。如果省略计算机名称,则 PsExec 将在本地系统上运行应用程序;如果输入计算机名称“\\*”,则 PsExec 将在当前域中的所有计算机上运行应用程序。
  @file
  指示 PsExec 在指定的文本文件中列出的每台计算机上运行命令。
  -a
  用逗号分隔可以运行应用程序的处理器,CPU 编号最小为 1。例如,要在 CPU 2 和 CPU 4 上运行应用程序,请输入:“-a 2,4”
  -c
  将指定的程序复制到远程系统以便执行。如果省略此选项,则应用程序必须位于远程系统上的系统路径中。
  -d
  不等待应用程序终止。请只对非交互式应用程序使用此选项。
  -e
  不加载指定帐户的配置文件。
  -f
  将指定的程序复制到远程系统,即使远程系统中已存在该文件。
  -i
  运行程序,以便它与远程系统中指定会话的桌面进行交互。如果未指定会话,则进程将在控制台会话中运行。
  -l
  以受限用户身份(去除 Administrators 组的权限,并且只允许使用分配给 Users 组的权限)运行进程。在 Windows Vista 上,此进程将以“低完整性”运行。
  -n
  指定与远程计算机连接的超时(秒)。
  -p
  指定用户名的密码(可选)。如果省略此选项,系统将提示您输入隐藏密码。
  -s
  在系统帐户中运行远程进程。
  -u
  指定用于登录远程计算机的可选用户名。
  -v
  仅在指定文件具有更高版本号或该文件比远程系统上的文件新时复制该文件。
  -w
  设置进程的工作目录(相对于远程计算机)。
  -x
  在 Winlogon 桌面上显示 UI(仅限于本地系统)。
  -priority
  指定 –low、-belownormal、-abovenormal、-high 或 -realtime 按不同优先级运行进程。
  program
  要执行的程序的名称。
  arguments
  要传递的参数(请注意,文件路径必须是目标系统中的绝对路径)
  对于其名称中含有空格的应用程序,可以在其两侧加引号,例如,psexec \\marklap "c:\long name\app.exe"。按下 Enter 键时,仅将输入内容传递到远程系统。键入 Ctrl-C 可终止远程进程。
  如果省略用户名,则远程进程将以执行 PsExec 时所使用的相同帐户运行,但由于远程进程以模仿方式运行,因此它无权访问远程系统上的网络资源。指定用户名时,远程进程将以指定的帐户执行,并可访问该帐户有权访问的任何网络资源。请注意,密码是以明文形式传递到远程系统的。
  当目标系统是本地系统时,由于 PsExec 不需要您具有管理员权限,因此您可以使用当前版本的 PsExec 来取代 Runas。
  示例:
  以下命令可在 \\marklap 上启动交互式命令提示窗口:
  psexec \\marklap cmd
  此命令通过 /all 开关在远程系统上执行 IpConfig,并在本地显示输出结果:
  psexec \\marklap ipconfig /all
  此命令将程序 test.exe 复制到远程系统,并以交互方式执行此程序:
  psexec \\marklap -c test.exe
  如果远程系统中已经安装的程序不在系统路径中,请指定该程序的完整路径:
  psexec \\marklap c:\bin\test.exe
  在系统帐户中以交互方式运行 Regedit,以便查看 SAM 和 SECURITY 注册表项的内容:
  psexec -i -d -s c:\windows\regedit.exe
  要以受限用户权限运行 Internet Explorer,请使用此命令:
  psexec -l -d "c:\program files\internet explorer\iexplore.exe"

你可能感兴趣的:(exec)