运行Wscript.Shell对象以调用PsExec

时间:2017-12-15 22:16:27

标签: cmd vbscript uac psexec

我试图从下面发布的表单中的PsExec对象中调用WScript.Shell(但我绝对愿意接受替代方案)。

Set oShell = CreateObject("WScript.Shell")
oShell.Run "cmd.exe /C C:\Users\NOT_Administrator\Desktop\PsExec.exe \\192.168.10.5  -u Administrator -p PASSWORD cmd /c ""C:\Windows\Launch_Bat.exe"""

请注意,要使PsExec成功,必须提供密码。

关于这一点的是,因为cmd.exe的初始oShell.Run是从非管理用户启动的,PsExec继承了那些缺少权限并最终无法连接给予错误"访问被拒绝。"我在读取和测试PsExec之后,在非管理命令提示符(没有涉及VBScript)和失败之间以及从成功执行的管理命令提示符之后得出结论。

所以我的问题是,是否可以让VBScript在脚本中以管理员身份(最好以上面发布的形式)启动cmd.exe,或强制PsExec部分使用权限作为管理帐户凭据传入?

此外,我尝试了下面发布的两种方法(两者都与我想要的形式不同):

  1. https://gallery.technet.microsoft.com/scriptcenter/9bda53d7-ec2e-4bc2-8e97-4487233bc55b

    set WshShell = WScript.CreateObject("WScript.Shell")
    PASSW = "PASSWORD"
    WshShell.run "runas /user:Administrator %comspec%"
    WScript.Sleep 1000
    WshShell.SendKeys PASSW
    WScript.Sleep 1000
    WshShell.SendKeys "{ENTER}"
    

    但是这封闭然后打开了一个管理命令提示符,但是我无法使脚本将任何内容传递给新提示。

  2. https://www.itsupportguides.com/knowledge-base/windows-7/windows-7-run-vbs-script-as-elevated-user-uac/

    If WScript.Arguments.Length = 0 Then
        Set objShell = CreateObject("Shell.Application")
        objShell.ShellExecute "wscript.exe", Chr(34) & _
            WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
    Else
        WScript.Echo "This code is ran as an elevated user, ie. 'Administrator'"
    End If
    

    但是这会打开一个回声对话框,但当我把它放在我的脚本的头部时,它只是让它无限循环。它还要求我输入我不介意的密码。我不愿意,但如果我必须的话。我知道虽然你可以使用set_credentials,runas没有明确的标志来传递密码。

0 个答案:

没有答案