【发布时间】:2016-01-07 14:56:59
【问题描述】:
好的,所以,我正在编写一个在 MMC Snapin 中执行一些命令的脚本,我在编写这种脚本方面不是很有经验,但我已经取得了很大的进步......我遇到的问题是,如果我在每次脚本运行时创建一个新对象,它会在加载 snapin 及其中的所有内容时大大延迟我的整个脚本(这可能需要长达五分钟)。如果它可以加载一次管理单元内容,然后根据需要对其进行控制,并且仅在还没有打开的情况下创建一个新对象,那么当我运行脚本有时 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>ServerName>IPv4>ScopeName>Scope Options)。(我主要在 vbscript 中解决了这部分,但是不知道如何在 C++ 或 C# 中执行此操作) 最后,我需要能够执行右键单击菜单项以“配置选项”,导航出现的弹出窗口的选项卡,输入一个值,然后应用更改/单击确定以关闭弹出窗口。最坏的情况,如果我不能通过实际向对象本身发送命令来“正常”地做到这一点,这部分我可以通过模仿击键来完成,但如果它是可以避免的,我不想这样做,因为它很草率。 然后,我基本上只需要以某种方式提醒 powershell 脚本我“已完成”,以便它可以继续,或者在出现错误时发出警报。
我不是要任何人来指导我完成这一切,我只是想知道这些步骤中的任何一个是否像我所描述的那样不可行,特别是如果我将不得不切换到 c++ 或c# 实现第一部分,因此重新学习所需的命令。
【问题讨论】: