使用管理员权限在VBA中执行VBS代码

使用管理员权限在VBA中执行VBS代码,vba,excel,vbscript,Vba,Excel,Vbscript,你好吗 我想在VBA环境中执行VBS代码,在本例中,我在MS Excel 2010的VB编辑器中工作。遗憾的是,我不知道如何转换VBS代码,以便VBA能够执行它 让我了解一下我正在做什么:我想执行一个需要管理员权限的VBS命令提示符。此提示将在网络中的其他PC上重新启动进程。当通过cmd执行时,VBS代码工作得非常好。我想使用VBA的原因是网络中有很多PC,我想使用循环来为每台PC执行VBS代码 好的,下面是VBS代码: strComputer = "Computername" Set objS

你好吗

我想在VBA环境中执行VBS代码,在本例中,我在MS Excel 2010的VB编辑器中工作。遗憾的是,我不知道如何转换VBS代码,以便VBA能够执行它

让我了解一下我正在做什么:我想执行一个需要管理员权限的VBS命令提示符。此提示将在网络中的其他PC上重新启动进程。当通过cmd执行时,VBS代码工作得非常好。我想使用VBA的原因是网络中有很多PC,我想使用循环来为每台PC执行VBS代码

好的,下面是VBS代码:

strComputer = "Computername"
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint  Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID)
Wscript.Sleep 10000
intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID)
现在的问题是,如何将此代码示例放入我的VBA环境中?我知道如何通过VBA执行VBS文件本身,但这还不够,因为我需要一个变量。此外,管理员权限由问题决定

好的,这里有一个更新,我现在在我的VBA中有了这段代码,但我无法开始工作,我还尝试实现runas admin:

Sub run_vbs_script()
Dim strComputer As String
'Dim WshShell
Dim objShell
Dim objWMIService
Dim dDate As Date

strComputer = "IEDBR8D60CR"

Set objShell = CreateObject("Wscript.Shell")

RunasStruser = "runas /user:Username Domain\domain name"

objShell.Run RunasStruser, 0

objShell.SendKeys "password"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint  Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID)

dDate = DateAdd("s", 10, DateTime.Now)
Do While dDate > DateTime.Now
    DoEvents
Loop

intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID)

Set objShell = Nothing
Set objWMIService = Nothing

End Sub

用于使用vba通过WMI结束进程。看一看。该示例关闭notepad.exe,但我相信您可以让它在excel的VBA编辑器中对symantec执行相同的操作。您需要添加对WMI脚本的引用

    Dim strComputer As String
    Dim objShell
    Dim objWMIService
    Dim dDate As Date
    strComputer = "Computer"
    Set objShell = CreateObject("Wscript.Shell")
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
    intReturn = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint  Protection\12.1.1000.157.105\Bin64\smc.exe -stop", Null, Null, intProcessID)

    dDate = DateAdd("s", 10, DateTime.Now)
    Do While dDate > DateTime.Now
        DoEvents
    Loop
    intReturn2 = objWMIService.Create("c:\Program Files (x86)\Symantec\Symantec Endpoint Protection\12.1.1000.157.105\Bin64\smc.exe -start", Null, Null, intProcessID)

    Set objShell = Nothing
    Set objWMIService = Nothing

您是管理员还是拥有管理员权限?
我想在VBA环境中执行VBS代码
,那么为什么要使用vb.net标记呢?如果您需要使用特定凭据连接到远程PC,那么使用
SWBemlocator.ConnectServer
可能会更简单。例如:您的VBscript应该很容易转换为VBA。感谢各位的输入,我会看一看,是的,我在网络中有管理员权限。谢谢,我会看一看结果。也谢谢,我会看一看。好的,这似乎是正确的方式。现在我只需要使用管理员权限运行此代码。有什么建议吗?