如何在用户登录时在网络中的所有计算机上以管理员身份运行批处理文件?

时间:2013-06-03 07:58:10

标签: windows-7 batch-file windows-xp

我没有安装组策略来从那里部署防火墙规则,因此在此期间我希望能够运行批处理文件来更新防火墙,以允许Spiceworks在我的计算机上进行扫描而不会出现错误。我有批处理文件来更改入站规则,但我无法在每台计算机上单独运行它们,这将不会节省时间。那么,如果没有用户看到管理员密码,我怎么能通过网络以管理员身份运行这个批处理文件?我在某些机器上运行XP,在其他机器上运行7个。

我已经尽力编辑这个问题,因为我是编程

的新手

1 个答案:

答案 0 :(得分:2)

我不知道如何在登录脚本中执行您想要的操作,但您可以使用PsExec从工作站一次完成所有操作。这是我使用的命令:

psexec -c -f -s -h /accepteula \\* "c:\path\to\your\batfile.bat" 

这将使用系统帐户对您域中的所有计算机运行它,并在运行之前将批处理文件复制到每台计算机。如果像我一样,你有一个大型域,并且你只想针对特定的OU运行它,那么这是我写的一个脚本。

@echo off
setlocal enabledelayedexpansion

:: User Defined Variables
set FilterOU=TRUE
set OU=Environmental
if %FilterOU%==TRUE (
set qComp=wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer Where "ds_distinguishedname like '%%%OU%%%'" get ds_name
) ELSE (
set qComp=wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer get ds_name
) 

Echo.
Echo Getting list of computers.
Echo.
for /f "skip=1" %%c in ('%qComp%') do ( 
  For /f %%d in ("%%c") do (
    ping -n 1 %%d | find "TTL=">nul && set r="up"||set r="down"
    if /i !r!=="up" (
       psexec -c -f -s -h /accepteula \\%%d "C:\scripts\yourbatchfile.bat" 
    )  
  )
)
exit /b