用于自动执行Sysinternals的批处理文件

时间:2014-05-21 13:48:25

标签: python windows batch-file sysinternals

我正在尝试创建批处理文件以自动执行Sysinternals。 这最终将由Python脚本执行以自动提升程序的凭据(是的,我知道这是不好的做法,是的,有方法可以提供密码到" runas"等等,但是这些解决方案都没有对我有用)

当我以普通用户身份打开命令提示符并键入以下内容时

.\psexec \\my_IP_address -u DOMAIN\my_admin_account -p my_admin_password cmd

我得到了

PsExec v2.0 - Execute processes remotely
Copyright (C) 2001-2013 Mark Russinovich
Sysinternals - www.sysinternals.com


Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32>

从那里我可以输入

.\psloggedon -l -x \\ip_address_of_remote_computer

屏幕打印结果

PsLoggedon v1.34 - See who's logged on
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

Users logged on locally:
        DOMAIN\last_user_logged_in

但是当我尝试创建以下批处理文件时

cd pstools
.\psexec \\my_IP_address -u DOMAIN\adminaccount -p adminpasword cmd
cd pstools
.\psloggedon -l -x \\ip_address_of_remote_computer

当我执行批处理文件时,它只执行前两个命令

cd pstools
.\psexec \\my_IP_address -u DOMAIN\adminaccount -p adminpasword cmd

如何让它执行所有命令?

在影响中,我打开一个命令提示符,然后提升权限(我计划将其合并到脚本中)

1 个答案:

答案 0 :(得分:0)

这是因为你的psloggedon命令在原始cmd中运行,而不是在新cmd中运行。

您应该将要运行的内容作为cmd的参数传递。例如,这对我有用:

psexec cmd /c "whoami & pause"

所以你也应该做类似的事情,例如:

cd pstools
.\psexec \\my_IP_address -u DOMAIN\adminaccount -p adminpasword cmd /c "cd pstools & psloggedon -l -x \\ip_address_of_remote_computer"

另一个选项,特别是在内部逻辑变得更复杂的情况下非常有用,就是为此创建一个新的批处理文件,并将其作为参数传递给cmd来运行。