使用VBScript控制MMC对象

使用VBScript控制MMC对象,vbscript,mmc,Vbscript,Mmc,好的,所以,我正在编写一个脚本,在MMC管理单元中执行一些命令,我对编写这种脚本不是很有经验,但我已经取得了很大的进展……我遇到的问题是,如果每次脚本运行时我都创建一个新对象,那么在加载管理单元和其中的所有内容时,它将大大延迟我的整个脚本(这可能需要5分钟的时间)。如果它可以加载一次管理单元内容,然后根据需要控制它,并且只在没有打开的情况下创建一个新对象,那么当我在一天内运行脚本100次时,我将节省大量时间 问题是,我不完全确定如何做到这一点。我想,经过一些研究,它将是GetObject,但当我

好的,所以,我正在编写一个脚本,在MMC管理单元中执行一些命令,我对编写这种脚本不是很有经验,但我已经取得了很大的进展……我遇到的问题是,如果每次脚本运行时我都创建一个新对象,那么在加载管理单元和其中的所有内容时,它将大大延迟我的整个脚本(这可能需要5分钟的时间)。如果它可以加载一次管理单元内容,然后根据需要控制它,并且只在没有打开的情况下创建一个新对象,那么当我在一天内运行脚本100次时,我将节省大量时间

问题是,我不完全确定如何做到这一点。我想,经过一些研究,它将是GetObject,但当我这样做的时候

Dim objMMC
Set objMMC = GetObject("", "MMC20.Application")
它似乎创建了一个没有加载管理单元的新mmc窗口,而不是我想要的加载了管理单元的现有窗口

有什么建议吗?我是完全偏离了基准,使用了完全错误的命令,还是有什么简单的改变可以解决这个问题

编辑: 是否有一些奇怪的解决方法可以实现这一点,比如将一个对象存储到一个临时文件中,这样我至少可以在单个会话中重用它

我遇到了一个奇怪的情况,我试图向powershell脚本添加功能,但找不到直接在powershell中执行的方法,因此我正在设置一个vbscript来执行其中的一部分,并从powershell调用vbscript。我已经做了大量研究,以找出如何在vbscript中执行该操作(我仍然不确定所有的)所以我想在我进一步之前,我会尝试弄清楚这是否可行(在VBScript或C语言或C++中,或者其他任何人可以建议的语言)…< 总的来说,我想做的是检查是否打开了包含DHCP管理单元的MMC窗口。如果是,请将其分配给变量。如果不是,请创建一个。 然后,它将从CSV或TXT文件中读取,并使用这些值来确定要在SNAPIN中导航到哪个节点(DHCP > ServNeNo> IPv4> StimeNeNe:Sistar选项)。(我在VBScript中主要解决了这一部分,但不知道如何在C++或C语言中实现)。 最后,我需要能够执行右键单击菜单项“配置选项”,浏览弹出窗口的选项卡,输入一个值,然后应用更改/点击“确定”关闭弹出窗口。最坏的情况是,如果我不能“正常”操作通过向对象本身发送命令,这一部分我可以模仿击键,但如果可以避免的话,我不想这样做,因为这太草率了。 然后,我基本上只需要以某种方式通知powershell脚本我已“完成”,以便它可以继续,或者在出现错误时发出警报

我不要求任何人来帮助我完成这些,我只是想知道这些步骤中有没有一个是我描述过的,特别是如果我必须切换到C++或C语言来实现第一部分,因此重新学习所需要的命令。 …并且仅在没有打开对象的情况下创建新对象

不,这在VBS中是不可能的,您需要这样做

Dim objMMC
Set objMMC = WScript.CreateObject("MMC20.Application")
如果每次脚本运行时我都创建一个新对象,它将大大延迟整个脚本


在这种情况下,VBS是错误的语言,你需要使用C++或C++可执行文件。

如果是这样的话,GETObjt的目的是什么?我所看到的一切似乎都是为了获得现有的对象而不是创建一个新的对象。我已经知道如何用CealObjt创建对象。但是真的没有吗?使用vbscript控制以前创建的对象的方法?我不希望一个单步命令自动确定一个对象是否打开,如果没有打开,我只希望能够尝试获取现有对象,然后编写一个if语句,这样如果找不到,它将打开一个新对象。GetObject的目的是返回对Au的引用文件中的操作对象。:
GetObject(,“foo.application”)
适用于某些对象(例如MS Office应用程序),但不适用于所有对象。