我目前使用try {
$hostname = '192.168.5.57:1433';
$dbname = 'Test';
$username = 'testuser';
$password = 'thisismypassword';
$db = new PDO("dblib:host=$hostname;dbname=$dbname","$username","$password");
} catch (PDOException $e) {
echo 'Failed to get DB handle: ' . $e->getMessage();
}
和winrs
更改远程PC上的防火墙规则,以便查询WMI。
shell
有没有更好的方法来执行此操作,不会弹出错误地窃取焦点的CMD窗口?
扩展我的问题:
我的团队领导者并不是最懂技术的人,所以我在Excel工作簿中创建了一堆宏,这些宏可以让他们做各种事情(比如在启用/禁用USB存储器之间切换,或者暂时将用户提升为本地管理员)等)。一切正常,但是我的团队领导对于这样一个事实感到恼火:当他们运行命令时,会弹出一个CMD窗口并暂时关注焦点(即使我指定了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
)。我不知道打开防火墙的另一种方法,这样当他们只是本地管理员而不是域管理员时,他们可以执行各种任务。是否有API或COM对象或我可以在VBA中引用以远程更改防火墙设置?或者是否有另一种方法可以调用vbMinimizedNoFocus
...就像Shell
那样可以在没有CMD窗口弹出的情况下工作?
答案 0 :(得分:1)
是的,使用WScript.Shell
对象的Run
方法代替Shell
函数应该有效:
Set sh = CreateObject("WScript.Shell")
sh.Run "cmd.exe /S /C " & strCMD, 0, True