为远程 WMI 打开防火墙

Open Firewall for Remote WMI

我目前使用 winrsshell 更改远程 PC 上的防火墙规则,以便我可以查询 WMI。

strCMD = "winrs -r:" & strHost & " netsh advfirewall firewall set rule group=" _
         & Chr(34) & "Windows Management Instrumentation (WMI)" & Chr(34) _
         & " new enable=yes"
Shell "cmd.exe /S /C" & strCMD, vbMinimizedNoFocus

有没有更好的方法来做到这一点,不会弹出 CMD windows 短暂窃取焦点?


扩展我的问题: 我的团队领导不是最精通技术的人,所以我在 Excel 工作簿中创建了一堆宏,允许他们做各种事情(比如在 USB 存储 enabled/disabled 之间切换,或者临时提升用户到本地管理员等)。一切正常,但我的团队领导对以下事实感到恼火:当他们 运行 一个命令时,会弹出一个 CMD window 并短暂获得焦点(即使我指定 vbMinimizedNoFocus)。我不知道还有另一种打开防火墙的方法,这样当他们只是本地管理员而不是域管理员时,他们就可以执行各种任务。是否有 API 或 COM 对象或我可以在 VBA 中引用的东西来远程更改防火墙设置?或者是否有另一种调用 Shell 的方法...比如 WScript.Shell 可以在没有弹出 CMD window 的情况下工作?

是的,使用 WScript.Shell 对象的 Run 方法而不是 Shell 函数应该可行:

Set sh = CreateObject("WScript.Shell")
sh.Run "cmd.exe /S /C " & strCMD, 0, True