好吧,我正在编写一个脚本来执行MMC Snapin中的一些命令,而且我在编写这种脚本方面不是很有经验,但是我做了很多进展...我遇到的问题是,如果我每次脚本运行时都创建一个新对象,它会大量延迟我的整个脚本,而snapin及其中的所有内容都会加载(可能需要长达五分钟)。如果它可以加载snapin内容一次然后根据需要控制它,并且只创建一个新对象,如果还没有打开,我会在运行时节省大量时间脚本有时一天100次。
问题是,我不完全确定如何实现这一目标。经过一些研究,我认为它是GetObject,但是当我做的时候
Dim objMMC
Set objMMC = GetObject("", "MMC20.Application")
似乎创建了一个没有加载snapins的新mmc窗口,而不是使用我想要的snapins来获取现有的窗口。
有什么建议吗?我完全偏离这里,使用完全错误的命令,还是我可以做一些简单的修改来解决这个问题?
编辑: 是否有一些奇怪的解决方法我可以实现这一点,比如将对象存储到临时文件中,这样我至少可以通过单个会话重用它。
我处于一种奇怪的情况,我试图在PowerShell脚本中添加功能,而且无法直接在PowerShell中找到方法,所以我要设置一个vbscript到做一件事并从powershell调用vbscript。我已经做了很多研究,想弄清楚如何在vbscript中做到这一点(而且我还不确定所有这些)所以我想在我再进一步研究之前,我会试着想一想如果这是可行的(在vbscript或c#或c ++或任何其他人可能建议的语言中)......
总的来说,我要做的是检查是否打开了包含DHCP管理单元的MMC窗口。如果是,请将其分配给变量。如果没有,请创建一个。 然后它将从csv或txt文件中读取,并使用这些值来确定要在管理单元中导航到哪个节点(DHCP> ServerName> IPv4> ScopeName>范围选项)。(我在vbscript中主要解决了这一部分) ,但不知道如何在C ++或C#中做到这一点) 最后,我需要能够执行右键单击菜单项来配置选项",导航出现的弹出窗口的选项卡,输入值,然后应用更改/命中确定以关闭弹出。最糟糕的情况,如果我不能做到这一点,通常"通过实际向对象本身发送命令,这部分我可以模仿击键,但如果它可以避免,我不想这样做,因为它很邋.. 然后,我基本上只需要以某种方式警告我已经完成的PowerShell脚本"所以它可以继续,或者如果出现错误就发出警报。
我并没有要求任何人引导我完成所有这些,我只是想知道这些步骤中的任何一个是不可行的,因为我已经描述过它们,特别是如果我这样做的话将不得不切换到c ++或c#来实现第一部分,从而重新学习所需的命令。
答案 0 :(得分:0)
...并且只创建一个新对象,如果还没有打开...
不,这在VBS中是不可能的,你需要做
Dim objMMC
Set objMMC = WScript.CreateObject("MMC20.Application")
如果我在每次脚本运行时创建一个新对象,它将大大延迟我的整个脚本
在这种情况下,VBS是错误的语言,您需要使用C#或C ++可执行文件。