CN100547552C - 用于自动化管理任务的系统和方法 - Google Patents

用于自动化管理任务的系统和方法 Download PDF

Info

Publication number
CN100547552C
CN100547552C CNB2004800012963A CN200480001296A CN100547552C CN 100547552 C CN100547552 C CN 100547552C CN B2004800012963 A CNB2004800012963 A CN B2004800012963A CN 200480001296 A CN200480001296 A CN 200480001296A CN 100547552 C CN100547552 C CN 100547552C
Authority
CN
China
Prior art keywords
little order
input
order
little
parameter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004800012963A
Other languages
English (en)
Other versions
CN101091160A (zh
Inventor
J·P·斯诺弗
D·W·雷
J·W·特露荷三世
B·G·帕耶特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101091160A publication Critical patent/CN101091160A/zh
Application granted granted Critical
Publication of CN100547552C publication Critical patent/CN100547552C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

在管理工具环境中,将用户输入提供给管理工具框架用于处理。管理工具框架将用户输入映射到小命令对象。小命令对象描述分析用户输入和输入对象以获得预期输入参数的语法。输入对象由一个小命令发出并可用作另一个小命令的输入。输入对象可以是任何可进行精确语法分析的输入,诸如.NET对象、普通串、XML文档等等。各小命令可在同一进程中运行。可供选择地,一个小命令可在本地运行而另一个小命令在远程运行。小命令可由管理工具框架提供,或者可由第三方开发者提供。用户输入可通过主机小命令提供给框架。

Description

用于自动化管理任务的系统和方法
技术领域
这里揭示的主题涉及运行时间环境,而且尤其涉及自动化管理任务的管理工具环境。
背景技术
管理任务支持诸如膝上型、桌面等计算设备日复一日的运行。例如,典型地,管理任务能使用户创建新文件夹、安装或更新应用程序、以及完成各种其它系统任务。维护网络化计算机的系统管理员完成甚至更复杂的管理任务,诸如创建新用户、部署软件和软件补丁、监控网络、查找网络故障等等。通常,命令行界面或图形用户界面(GUI)方便于管理任务的执行。
大多数图形用户界面需要用户导航一系列菜单或页面,然后在所想要的选项上点击。按照这样的界面,需要用户跟随这一系列菜单或页面,并且不允许在没有开始或者在这一系列页面上下来回移动过的情况下就从一个页面跳到另一个。这样的界面可称为受限的导航界面,其中用户必须跟随编制并预定好的过程来实现管理目标。初学者用户可能得益于使用这样一种GUI,因为它在每个菜单或页面上提供了帮助信息,指导初学者用户到想要的管理任务。但是,对许多诸如系统管理员这样的高级用户而言,使用具有僵硬导航限制的GUI非常麻烦。这些高级用户已经了解了他们想要执行的管理任务。另外,高级用户期望至少某种程度的任务自动化。但是,自动化通过GUI访问的管理任务非常困难。而且,如果GUI改变了,相应的自动化可能不再正确运行。这样,许多高级用户宁愿使用更健壮的命令行界面。
命令行界面允许用户直接通过键入命令执行任务。用命令行界面的一个缺点是用户必须知道要键入的准确命令,因为帮助信息不在显示器上提供。但是,一旦知道了命令,键入命令就比导航一系列菜单更为有效得多。另外,从命令行界面执行的任务可以被自动化。例如,当用户注意到他们连续键入同样的命令时(例如,一系列命令等),他们可创建包括这些重复命令的脚本(例如,.bat文件)。当执行脚本时,就执行所有列在脚本中的命令。用户不久还可能注意到不同的脚本包含相似项。注意到这点,用户可能希望在脚本内创建参数化的子例程来进一步使任务自动化。
但是,许多提供复杂自动化特性的脚本解决方案(例如,参数化子例程)都以与成熟的应用程序相同的方法开发,并且需要系统编程知识。这样。这些解决方案对于普遍不具有复杂编程知识的系统管理员不理想。
因此,目前,系统管理员必须或者放弃自动化,或者使用系统编程技能来自动化。两者中没有一个选项是很合人意的。如果管理员选择放弃自动化,就要承受支持几个其它管理员来帮助手工运行任务的附加成本。但是如果管理员选择使任务自动化,则要承受支持编程环境并获取必需的编程技能的成本。另外,因为一旦发生变化时,必须重建自动化工具,维护成本很昂贵。
因此,存在对使管理员能有效且高效率自动化管理任务的管理工具框架的需求。
发明内容
设置了一种管理工具框架。提供用户输入给管理工具框架进行处理。管理工具框架将用户输入映射到小命令对象。小命令对象关联于分析用户输入和输入对象以获得在小命令内识别的预期输入参数的语法。语法可在小命令内直接关联,诸如使用参数说明。可供选择地,语法可间接与小命令关联,诸如通过XML文档。输入对象由一个小命令发出并可用作另一个小命令的输入。输入对象可以是任何可进行精确语法分析的输入,诸如.NET对象、普通串、XML文档等等。小命令可在同一进程中运行。可供选择地,一个小命令本地运行同时另一个小命令在另一个进程中或远程运行。小命令可由管理工具框架提供,或者可由第三方开发者提供。用户输入可通过主机小命令提供给框架。
附图说明
图1示出一示例性计算设备,它可使用一示例性管理工具环境。
图2是一方框图,大致示出本管理工具环境的一示例性管理工具框架的概要。
图3是一方框图,示出图2所示管理工具框架的主机专用组件内的组件。
图4是一方框图,示出图2所示的管理工具框架的核心引擎组件内的组件。
图5是一示例性数据结构,详细说明适于在图2所示管理工具框架内使用的小命令。
图6是一示例数据结构,详细说明从中可导出图5所示小命令的命令基类。
图7是另一示例数据结构,详细说明适于在图2所示管理工具框架内使用的小命令。
图8是一逻辑流程图,示出用于主机处理的示例性处理过程,它在图2所示管理工具框架内执行。
图9是一逻辑流程图,示出用于处理输入的示例性处理过程,它在图2所示管理工具框架内进行。
图10是一逻辑流程图。示出用于处理脚本的过程,适于在图9所示用于处理输入的进程内使用。
图11是一逻辑流程图,示出适于在图10所示脚本处理过程内使用的脚本预处理过程。
图12是一逻辑流程图,示出用于施加约束的过程,适于在图10所示的脚本处理过程内使用。
图13是一功能流程图,示出在图2所示的管理工具框架中对命令串的处理。
图14是一逻辑流程图,示出用于处理命令串的过程,适于在图9所示用于处理输入的处理过程内使用。
图15是一逻辑流程图,示出用于创建小命令实例的示例性进程,适于在图14所示的对命令串的处理内使用。
图16是一逻辑流程图,示出用于填充小命令属性的示例性处理过程,适于在图14所示对命令的处理内使用。
图17是一逻辑流程图,示出用于执行小命令的示例性进程,适于在图14所示对命令的处理内使用。
图18是一示例扩展类型管理程序的功能框图,适于在图2所示管理工具框架内使用。
图19图示了管道内输出处理小命令的示例性序列。
图20示出由图19所示的输出处理小命令之一所执行的示例性处理。
图21图示了在图20的处理期间访问的显示信息的示例性结构。
图22是一表,列出了示例输出处理小命令的示例性句法。
图23示出由out/console小命令使用输出处理小命令的各种管道序列呈现的结果。
具体实施方式
简而言之,本管理工具环境提供了减少相关于维护和支持计算机和计算机网络的管理成本的计算框架。另外,框架支持程序员和非程序员两者对管理工具的快速特别开发。
以下阐述了特定示例性管理工具环境。其它示例环境可包括这个特定实施例特征和/或其它特征,其目标是方便于管理任务。
以下详细描述分成几个部分。第一部分描述在其中管理工具环境可运行的说明性的计算环境。第二部分描述管理工具环境的示例框架。接下来的部分描述示例性框架的各个组件和这些组件的运行。
示例性计算环境
图1示出了可在一个示例性管理工具环境中使用的一个示例性计算装置。在十分基本的配置中,计算装置100通常包括至少一个处理单元102和系统存储器104。根据计算装置的确切配置和类型,系统存储器104可以是易失(如RAM)、非易失(如ROM、闪存等)或两者的某一组合。系统存储器104通常包括操作系统105、一个或多个程序模块106,并且可包括程序数据107。操作系统包括基于组件的框架,它支持组件(包括属性和事件)、对象、继承、多态性、反射,并提供面向对象的基于组件的应用编程接口(API),如由华盛顿州雷蒙德市微软公司生产的.NETTM框架的API。操作系统105也包括与基于组件的框架120交互的管理工具框架200,以支持管理工具(未示出)的开发。这一基本配置在图1中由虚线108内的那些组件示出。
计算装置100可具有另外的特征或功能。例如,计算装置100也可包括另外的数据存储设备(可移动和/或不可移动),如磁盘、光盘或磁带。这类另外的存储在图1中由可移动存储109和不可移动存储110示出。计算机存储介质可包括以用于储存如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法和技术实现的易失和非易失、可移动和不可移动介质。系统存储器104、可移动存储109和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存期望的信息并可由计算装置100访问的任一其它介质。任一这类计算机存储介质可以是装置100的一部分。计算装置100也可具有(多个)输入设备112,如键盘、鼠标、输入笔、语音输入设备、触摸输入设备等等。也可包括(多个)输出设备114,如显示器、扬声器、打印机等等。这些设备在本领域中都是众所周知的,无需在此详细描述。
计算装置110也包含允许装置如通过网络与其它计算装置118进行通信的通信连接116。通信连接116是通信介质的一个示例。通信介质通常可以诸如载波或其它传输机制等已调制数据信号实施的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。本发明使用的术语计算机可读介质包括存储介质和通信介质两者。
示例性管理工具框架
图2是概括地示出了示例性管理工具框架200的综述的框图。管理工具框架200包括一个或多个主机组件202、主机专用组件204、主机无关组件206以及处理程序组件208。主机无关组件206可与其它组件(即,主机组件202、主机专用组件204和处理程序组件208)的每一个通信。这些组件的每一个在下文简要描述,并在需要时在随后的章节中详细描述。
主机组件
主机组件202包括一个或多个主机程序(如,主机程序210-214),它们向用户或其它程序展示了用于相关联的应用程序的自动化特征。每一主机程序210-214可以其自己特有的风格展示这些自动化特征,例如通过命令行、图形用户界面(GUI)、语音识别接口、应用编程接口(API)、脚本语言、web服务等等。然而,主机程序210-214的每一个通过由管理工具框架提供的机制展示了一个或多个自动化特征。
在本示例中,该机制使用了小命令(cmdlet)以向相关联的主机程序210-214的用户提供管理工具能力的表面。另外,该机制使用了一组由主机变得可用的接口以在与对应的主机程序210-214相关联的应用程序中嵌入管理工具环境。贯穿以下讨论,术语“小命令”用于指在参考图2-23描述的示例性管理工具环境内使用的命令。
小命令对应于传统管理环境内的命令。然而,小命令与这些传统命令完全不同。例如,小命令通常比其相对的命令在大小上更小,因为小命令可使用管理工具框架提供的公用功能,例如语法分析、数据确认、出错报告等等。由于这些公用功能可被实现一次并测试一次,因此贯穿管理工具框架对小命令的使用允许与应用程序专用功能相关联的递增开发和测试成本与传统环境相比相对较低。
另外,与传统的环境相反,小命令不需要是独立的可执行程序。相反,小命令可以在管理工具框架内的同一进程中运行。这允许小命令在彼此之间交换“活动”对象。这一交换“活动”对象的能力允许小命令直接在这些对象上调用方法。创建和使用小命令的细节在下文更详细地描述。
总体上,每一主机程序210-214管理用户和管理工具框架内的其它组件之间的交互。这些交互可包括对参数的提示、错误报告等等。通常,每一主机程序210-213可提供其自己的专用主机小命令集(例如,主机小命令218)。例如,如果主机程序是电子邮件程序,则主机程序可提供与邮箱和消息交互的主机小命令。即使图2示出了主机程序210-214,然而本领域的技术人员可以理解,主机组件202可包括与现有或新创建的应用程序相关联的其它主机程序。这些其它主机程序也将把由管理工具环境提供的功能嵌入在其相关联的应用程序内。由主机程序提供的处理在下文结合图8详细描述。
在图2所示的示例中,主机程序可以是管理控制台(即,主机程序210),它提供了简单、一致的管理用户界面,以供用户创建、保存和打开管理计算装置的硬件、软件和网络组件的管理工具。为实现这些功能,主机程序210提供了用于在管理工具框架上构建管理GUI的一组服务。GUI交互也可被展示为用户可见的脚本,它帮助将由管理工具环境提供的脚本能力教给用户。
在另一示例中,主机程序可以是命令行交互式外壳(即,主机程序212)。命令行交互式外壳可允许外壳元数据216在命令行上输入,以影响命令行的处理。
在又一示例中,主机程序可以是web服务(即,主机程序214),它使用用于跨平台的分布式计算和互操作性的行业标准规范、编程语言和应用程序。
除这些示例之外,第三方可通过创建在其主机程序或其它主机程序中使用的“第三方”或“提供者”接口和提供者小命令,来添加其自己的主机组件。提供者接口展示了应用程序或基础结构,使得该应用程序或基础结构可由管理工具框架来操纵。提供者小命令提供了用于导航、诊断、配置、生命周期、操作等的自动化。提供者小命令展示了完整的数据存储异构集上的多态小命令行为。管理工具环境在提供者小命令上用与其它小命令类相同的优先级操作。提供者小命令是使用与其它小命令相同的机制创建的。提供者小命令向管理工具框架展示了应用程序或基础结构的特定功能。由此,通过使用小命令,产品开发者只需创建一个主机程序,它然后将允许其产品对许多管理工具运作。例如,采用示例性管理工具环境,系统级图形用户界面帮助菜单可以被集成并移植到现有的应用程序中。
主机专用组件
主机专用组件204包括计算装置(例如,图1描述的计算装置100)用于将管理工具框架与该框架所运行的平台细节相隔离的服务的集合。由此,对每一类型的平台有一组主机专用组件。主机专用组件允许用户在不同的操作系统上使用同一管理工具。
简要地转向图3,主机专用组件204可包括智能感知(intellisense)/元数据访问组件302、帮助小命令组件304、配置/注册组件306、小命令设置组件308以及输出接口组件309。组件302-308与关联于数据库存储314的数据库存储管理器312通信。语法分析器220和脚本引擎222与智能感知/元数据访问组件302通信。核心引擎224与帮助小命令组件304、配置/注册组件306、小命令设置组件308和输出接口组件309通信。输出接口组件309包括由主机向外部小命令提供的接口。这些外部小命令然后可调用主机的输出对象来执行呈现。主机专用组件204也可包括日志记录/审计组件310,核心引擎224使用该组件来与提供日志记录和审计能力的主机专用(即,平台专用)服务通信。
在一个示例性管理工具框架中,智能感知/元数据访问组件302提供了命令、参数和参数值的自动完成。帮助小命令组件304提供了基于主机用户界面的定制帮助系统。
处理器组件
回头参考图2,处理器组件208包括传统实用程序230、管理小命令232、非管理小命令234、远程小命令236以及web服务接口238。管理小命令232(也称为平台小命令)包括查询或操纵与计算装置相关联的配置信息的小命令。由于管理小命令232操作系统类型信息,因此它们依赖于特定的平台。然而,每一平台通常具有提供与其它平台上的管理小命令232类似的行动的管理小命令232。例如,每一平台支持获取和设置系统管理属性(如,获取/处理、设置/IP地址)的管理小命令232。主机无关组件206通过主机无关组件206内生成的小命令对象与管理小命令通信。用于小命令对象的示例性数据结构将在下文结合图5-7详细描述。
非管理小命令234(有时候称为基础小命令)包括在由管理小命令232提供的对象上组合、排序、过滤和执行其它处理的小命令。非管理小命令234也可包括用于格式化并输出与管道化对象相关联的数据的小命令。用于提供数据驱动命令行输出的一种示例性机制在下文参考图19-23描述。非管理小命令234可以在每一平台上是相同的,并提供了一组通过小命令对象与主机无关组件206交互的实用程序。非管理小命令234和主机无关组件之间206的交互允许对象上的反射,并允许与其(对象)类型无关地在反射的对象上进行处理。由此,这些实用程序允许开发者一次书写非管理小命令,然后跨计算系统上支持的所有对象类应用这些非管理小命令。在过去,开发者必须首先充分理解要处理的数据的格式,然后书写应用程序来仅处理该数据。结果,传统应用程序只能处理非常有限范围的数据。用于与其对象类型无关地处理对象的一种示例性机制在下文结合图18描述。
传统实用程序230包括现有的可执行代码,诸如在cmd.exe下运行的win32可执行代码。每一传统实用程序230使用文本流(即,stdin和stdout)与管理工具框架通信,文本流是对象框架内的一种对象类型。由于传统实用程序230使用了文本流,因此由管理工具框架提供的基于反射的操作是不可用的。传统实用程序230在与管理工具框架不同的进程内执行。尽管未示出,其它小命令也可在进程外操作。
远程小命令236与web服务接口238一起提供了通过诸如因特网或内联网(例如,图2所示的因特网/内联网240)等通信介质访问其它计算装置上的交互式和编程管理工具环境的远程机制。在一个示例性管理工具框架中,远程机制支持依赖于跨越多个独立控制域的基础结构上的联合服务。远程机制允许脚本在远程计算装置上执行。脚本可以在单个或多个远程系统上运行。脚本的结果可以当每一个别的脚本完成时被处理,或者结果可以被累积,并在各种计算装置上的所有脚本完成之后一起处理。
例如,被示出为主机组件202之一的web服务214可以是远程代理。远程代理处理远程命令请求对目标系统上的语法分析器和管理工具框架的提交。远程小命令担当以提供对远程代理的访问的远程客户机。远程代理和远程小命令通过经语法分析的流来通信。该经语法分析的流可以在协议层上保护,或者可使用另外的小命令来加密,然后解密经语法分析的流。
主机无关组件
主机无关组件包括语法分析器220、脚本引擎222以及核心引擎224。主机无关组件206提供了组合多个小命令、协调小命令的操作以及协调其它资源、会话和作业与小命令的交互的机制和服务。
示例性语法分析器
语法分析器220提供了从各种主机程序接收输入请求并将输入请求映射到贯穿整个管理工具框架使用,诸如在核心引擎224内使用的统一小命令对象的机制。另外,语法分析器220可基于接收到的输入执行数据处理。用于基于输入执行数据处理的一种示例性方法在下文结合图12描述。本发明的管理工具框架的语法分析器220提供了简单地向用户展现同一能力的不同的语言或句法的能力。例如,由于语法分析器220负责解释输入请求,因此语法分析器220内影响期望输入句法的代码改变本质上将影响管理工具框架的每一用户。因此,系统管理员可在不同的计算装置上提供支持不同句法的不同的语法分析器。然而,用同一语法分析器操作的每一用户对每一小命令将经历一致的句法。相反,在传统的环境中,每一命令实现其自己的句法。由此,对于上千种命令,每一环境支持若干不同的句法,它们中的大多数通常彼此不一致。
示例性脚本引擎
脚本引擎222提供了使用脚本将多个小命令联系在一起的机制和服务。脚本是在继承的严格规则下共享会话状态的命令行的聚集。基于输入请求中提供的句法,脚本内的多个命令行可以同步或异步地执行。脚本引擎22能够处理诸如如循环和条件子句等控制构造,并能够处理脚本内的变量。脚本引擎也管理会话状态,并向小命令给予基于政策(未示出)对会话数据的访问。
示例性核心引擎
核心引擎224负责处理由语法分析器220识别的小命令。简单地转向图4,示出了管理工具框架200内的一个示例性核心引擎。该示例性核心引擎224包括管道处理器402、加载器404、元数据处理器406、以及出错和事件处理器308、会话管理器410、以及扩展类型管理器412。
示例性元数据处理器
元数据处理器406被配置成访问元数据并将其储存在诸如图3所示的数据库存储314等元数据存储中。元数据可以通过命令行、在小命令类定义内等提供。管理工具框架200内的不同组件可在执行其处理时请求元数据。例如,语法分析器202可请求元数据以确认命令行上提供的参数。
示例性出错和事件处理器
出错和事件处理器408提供了一错误对象,它储存关于命令行的处理期间的每一出错发生的信息。对于尤其适合本发明的管理工具框架的一个特定出错和事件处理器的额外信息,请参阅名为“System and Method for PersistingError Information in a Command Line Environment(用于持久保存命令行环境中的错误信息的系统和方法)”的美国专利申请号__/美国专利号___,其为本发明的同一受让人所有,并通过引用结合于此。
示例性会话管理器
会话管理器410向管理工具框架200内的其它组件提供会话和状态信息。会话管理器管理的状态信息可由任一小命令、主机或核心引擎通过编程接口来访问。这些编程接口允许状态信息的创建、修改和删除。
示例性管道处理器和加载器
加载器404被配置成加载存储器中的每一小命令,以使管道处理器402能够执行小命令。管道处理器402包括小命令处理器420和小命令管理器422。小命令处理器420分派个别的小命令。如果小命令需要在远程或一组远程机器上执行,则小命令处理器420协调与图2所示的远程小命令236的执行。小命令管理器422处理小命令的聚集的执行。小命令管理器422、小命令处理器420以及脚本引擎222(图2)彼此通信,以在从主机程序210-214接收到的输入上执行处理。通信可以本质上是递归的。例如,如果主机程序提供脚本,则该脚本可调用小命令管理器422以执行小命令,该小命令本身可以是脚本。脚本然后可由脚本引擎222执行。核心引擎的一个示例性过程流在下文结合图14详细描述。
示例性扩展类型管理器
如上所述,管理工具框架提供了允许对象上的反射并允许独立于其(对象)类型在反射的对象上处理的一组实用程序。管理工具框架200与计算系统上的组件框架(图1所示的组件框架120)交互,以执行这一反射。本领域的技术人员可以理解,反射提供了查询对象并获取该对象的类型,然后在各种对象以及与该类型对象相关联的属性反射以获取其它对象和/或需要的值的能力。
即使反射向管理工具框架200提供了对象上的大量信息,因此发明人理解,反射集中在该类型的对象上。例如,当在数据库数据表上反射时,返回的信息是数据表具有两个属性:列属性和行属性。这两个属性未提供关于数据表内的“对象”的足够细节。当在可扩充标记语言(XML)和其它对象上使用反射时也会产生类似的问题。
由此,发明人构想了一种集中在类型的使用上的扩展类型管理器412。对于这一扩展类型管理器,对象的类型不是重要的。相反,扩展类型管理器对于该对象是否能用于获取需要的信息是感兴趣的。继续上述数据表示例,发明人理解,知道数据表具有列属性和行属性并不是特别感兴趣的,但是理解,一列包含感兴趣的信息。集中在使用上,可将每一行与“对象”相关联,并将每一列与该“对象”的“属性”相关联。由此,扩展类型管理器412提供了一种从任一类型的可精确语法分析输入中创建“对象”的机制。如此,扩展类型管理器412补充了基于组件的框架120提供的反射能力,并将“反射”扩展到任一类型的可精确语法分析输入。
总体上,扩展类型管理器被配置成访问可精确语法分析输入(未示出),并将可精确语法分析输入与请求的数据类型相关。扩展类型管理器412然后向作出请求的组件,例如管道处理器402或语法分析器220提供所请求的信息。在以下讨论中,可精确语法分析输入被定义为其中可辨别属性和值的输入。某些示例性可精确语法分析输入包括Windows管理规程(WMI)输入、ActiveX数据对象(ADO)输入、可扩充标记语言(XML)输入以及诸如.NET对象等对象输入。其它可精确语法分析输入可包括第三方数据格式。
简要地转向图18,示出了在管理工具框架内使用的示例性扩展类型管理器的功能框图。为解释的目的,由扩展类型管理器提供的功能(由圆圈内的数字“3”表示)与由传统紧绑定系统提供的功能(由圆圈内的数字“1”表示)以及由反射系统提供的功能(由圆圈内的数字“2”表示)形成对比。在传统的紧绑定系统中,应用程序内的调用者1802直接访问对象A内的信息(例如,属性P1和P2、方法M1和M2)。如上所述,调用者1802在编译时必须事先知道由对象A提供的属性(如,属性P1和P2)以及方法(如,方法M1和M2)。在反射系统中,类属代码1820(不依赖于任何数据类型)查询在请求的对象上执行反射1810的系统1808,并向类属代码1820返回关于该对象(如,对象A)的信息(例如,属性P1和P2、方法M1和M2)。尽管未在对象A中示出,返回的信息可包括诸如销售商、文件、日期等的附加信息。由此,通过反射,类属代码1820至少包含紧绑定系统提供的相同信息。反射系统也允许调用者1802查询系统,并在没有关于参数的任何先验知识的情况下获取附加信息。
在紧绑定系统和反射系统中,新数据类型不能被容易地结合到操作环境中。例如,在紧绑定系统中,一旦操作环境被交付,则操作环境无法结合新数据类型,因为它必须被重构以支持它们。同样,在反射系统中,每一对象类的元数据是固定的。由此,结合新数据类型通常未完成。
然而,采用本发明的扩展类型管理器,可以将新数据类型结合到操作系统中。采用扩展类型管理器1822,类属代码1820可在请求的对象上反射,以获取由各种外部源提供的扩展数据类型(如,对象A’),诸如第三方对象(如,对象A’和B)、语义web 1832、本体论服务1834等等。如图所示,第三方对象可扩展现有对象(如,对象A’)或可创建全新的对象(如,对象B)。
这些外部源的每一个可在类型元数据1840内注册其唯一的构造,并可提供代码1842。当对象被查询时,扩展类型管理器审阅类型元数据1840,以判断对象是否已被注册。如果对象未在类型元数据1840内注册,则执行反射。否则,执行扩展反射。代码1842返回与反射的类型相关联的附加属性和方法。例如,如果输入类型是XML,则代码1842可包括描述使用XML来从XML文档创建对象的方式的描述文件。由此,类型元数据1840描述了扩展类型管理器412应当如何查询各种类型的可精确语法分析输入(例如,第三方对象A’和B、语义web 1832)来获取用于对该特定输入类型创建对象的期望属性,并且代码1842提供了获取这些期望属性的指令。结果,扩展类型管理器412提供了一间接层,它允许在所有类型的对象上“反射”
除提供扩展类型之外,扩展类型管理器412提供了附加的查询机制,如属性路径机制、关键字机制、比较机制、开关机制、通配符处理(globber)机制、属性设置机制、关系机制等等。这些查询机制的每一个在下文“示例性扩展类型管理器处理”一节中详细描述,它们在输入命令串时向系统管理员提供了灵活性。可使用各种技术来实现扩展类型管理器的语义。下文描述了三种技术。然而,本领域的技术人员可以理解,可使用这些技术的变体而不脱离要求保护的本发明的范围。
在一种技术中,可提供具有静态方法(如,getproperty())的一系列类。对象被输入到静态方法中(例如,getproperty(object)),并且静态方法返回一组结果。在另一种技术中,操作系统用适配器包装对象。由此,不提供输入。适配器的每一实例具有getproerty(获取属性)方法,它在包装的对象上运作,并返回该包装对象的属性。以下是示出这一技术的伪代码:
Class Adaptor
{
     Object X;
     getProperties();
}
在又一种技术中,适配器类对对象进行细分类。传统上,细分类在编译之前发生。然而,对于某些操作环境,细分类可动态地发生。对于这些类型的环境,以下是示出这一技术的伪代码:
Class Adaptor:A
{
    getProperties()
    {
          return data;
    }
}
由此,如图18所示,扩展类型管理器允许开发者创建新的数据类型、注册该数据类型、并允许其它应用程序和小命令使用该新的数据类型。相反,在现有的管理环境中,在编译时每一数据类型必须是已知的,使得与从该数据类型例示的对象相关联的属性或方法可被直接访问。因此,添加管理环境所支持的新数据类型在过去很少完成。
返回到图2,总体上,管理工具框架200不依赖于用于协调用户的命令输入的执行的外壳,但是相反,将功能分割成处理部分(例如,主机无关组件206)和用户交互部分(例如,通过主机小命令)。另外,本发明的管理工具环境很大程度上简化了管理工具的编程,因为语法分析和数据确认所需的代码不再包括在每一命令中,而是相反,由管理工具框架内的组件(例如,语法分析器220)提供。下文描述管理工具框架内执行的示例性处理。
示例性操作
图5-7图形地示出了在管理工具环境中使用的示例性数据结构。图8-17图形地示出了管理工具环境内的示例性处理流。本领域的技术人员可以理解,某些处理可以由与以下描述的组件不同的组件来执行,而不脱离本发明的范围。在描述管理工具框架内执行的处理之前,描述管理工具框架内使用的示例性数据结构。
小命令对象的示例性数据结构
图5是用于指定始于在图2所示的管理工具框架内使用的小命令的示例性数据结构。当完成时,小命令可以是管理小命令、非管理小命令、主机小命令、提供者小命令等等。以下讨论描述了相对于系统管理员的观点的小命令(即,提供者小命令)的创建。然而,每一类型的小命令以相同的方式创建并以相同的方式操作。小命令可以用任何语言来书写,如C#。另外,小命令可以使用脚本语言或类似语言来书写。当管理工具环境用.NET框架来运作时,小命令可以是.NET对象。
提供者小命令500(后文称为小命令500)是具有小命令类名(例如,StopProcess(停止进程)504)的公用类。小命令500从小命令类506导出。小命令类506的一个示例性数据结构在下文结合图6描述。每一小命令500与一命令属性502相关联,该命令属性将名字(例如,Stop(停止)/Process(进程))与小命令500相关联。名字在管理工具环境内注册。如下文描述的,当在命令行或脚本中提供具有名字(例如,Stop/Process)的命令串作为输入时,输入语法分析器在小命令注册表中查找,以识别小命令500。
小命令500与一语法机制相关联,该语法机制定义了对小命令的期望输入参数的语法。语法机制可以直接或间接地与小命令相关联。例如,小命令500示出了直接语法关联。在这一小命令500中,声明了一个或多个公用参数(如,ProcessName(进程名)510和PID 512)。公用参数的声明驱动了对小命令500的输入对象的语法分析。或者,参数的描述可以在外部源中出现,如XML文档。该外部源中的参数描述然后将驱动对小命令的输入对象的分析。
每一公用参数510、512可具有与其相关联的一个或多个属性(即,伪指令)。伪指令可来自以下类别的任一个:语法分析伪指令521、数据确认伪指令522、数据生成伪指令523、处理伪指令524、编码伪指令525以及文档编制伪指令526、伪指令可以用方括号环绕。每一伪指令描述了要在下面预期的输入参数上执行的操作。某些伪指令也可在类级应用,如用户交互类型伪指令。伪指令储存在与小命令相关联的元数据中。这些属性的应用在下文结合图12描述。
这些属性也可反映小命令内声明的参数的填充。用于填充这些参数的一个示例性过程在下文结合图16描述。核心引擎可应用这些伪指令以确保依从性。伪指令500包括第一方法530(后文可互换地被称为StartProcessing(开始处理)方法530)以及第二方法540(后文可互换地被称为processRecord(处理记录)方法540)。核心引擎使用第一和第二方法530、540,来指示小命令500的处理。例如第一方法530被执行一次,并执行设置功能。第二方法540内的代码542对需要由小命令500处理的每一对象(如,记录)执行。小命令500也可包括在小命令500之后清理的第三方法(未示出)。
由此,如图5所示,第二方法540内的代码542通常相当简单,并且不包含传统管理工具环境中需要的功能,如语法分析代码、数据确认代码等等。由此,系统管理员能够开发复杂的管理任务,而无需学习复杂的编程语言。
图6是用于指定从其导出图5所示的小命令的小命令基类602的示例性数据结构600。当小命令包括挂钩(hook)语句并且对应的开关是命令行上或脚本中的输入(统称为命令输入)的任何时候,小命令基类602包括提供额外功能的指令。
示例性数据结构600包括参数,如布尔参数verbose 610、whatif 620和confirm 630。如下文所解释的,这些参数对应于可在命令输入上键入的串。示例性数据结构600也可包括确定请求执行的任务是否被允许的安全方法640。
图7是用于执行小命令的另一示例性数据结构700。总体上,该数据结构700提供了用于清楚地表达管理工具框架和小命令之间的合约的方法。类似于数据结构500,该数据结构700是从小命令类704导出的公用类。软件开发者指定将名词/动词对,如“get/process(获取/进程)”和“format/table(格式化/表格)”与小命令700相关联的cmdletDeclaration 702。名词/动词对在管理工具环境内注册。动词或名词可以在小命令名中是隐含的。同样,类似于数据结构500,数据结构700可包括一个或多个公用成员(如,Name 730、Recurse 732),它们可以与结合数据结构500所描述的一个或多个伪指令520-526相关联。
然而,在这一示例性数据结构700中,期望输入参数730和732的每一个可以分别与输入属性731和733相关联。输入属性731和733指定了其相应参数730和732的数据应当从命令行获取。由此,在此示例性数据结构700中,没有从另一小命令发出的管道化对象填充的任何期望输入参数。由此,数据结构700不覆盖由小命令基类提供的第一方法(如,StartProcessing)或第二方法(如,ProcessRecord)。
该数据结构700也可包括不被识别为输入参数的私有成员740。私有成员740可用于储存基于伪指令之一生成的数据。
由此,如数据结构700中所示的,通过使用在特定小命令类中声明公有属性和伪指令,小命令开发者可容易地为其小命令的期望输入参数指定语法,并指定应当在期望输入参数上执行的处理,而无需小命令开发者生成任一底层逻辑。数据结构700示出了小命令和语法机制之间的直接关联。如上所述,这一关联也可以是间接的,如通过指定诸如XML文档等外部源内的期望参数定义。
现在描述管理工具环境内的示例性过程流。
示例性主机处理流
图8所示是用于在图2所示的管理工具框架内执行的主机处理的示例性过程的逻辑流程图。该过程800在框801开始,其中,接收到启动特定应用程序的管理工具框架的请求。该请求可以通过诸如选择应用程序图标等键盘输入本地发送,或者通过不同计算装置的web服务接口远程发送。对于任一种情形,处理继续到框802。
在框802,“目标”计算装置上特定的应用程序(例如,主机程序)设置其环境。这包括判断令小命令的哪些子集(例如,管理小命令232、非管理小命令234以及主机小命令218)对用户可用。通常,主机程序将令所有的非管理小命令234可用,并且令其自己的主机小命令218可用。另外,主机程序将令管理小命令234的一个子集可用,如处理进程、盘等的小命令。由此,一旦主机程序令小命令的子集可用,管理工具框架被有效地嵌入在对应的应用程序中。处理继续到框804。
在框804,通过特定的应用程序获取输入。如上所述,输入可采用若干形式,如命令行、脚本、语音、GUI等等。例如,当输入是通过命令行获取时,输入从键盘上键入的按键来检索。对于GUI主机,串是基于GUI来组成的。处理在框806继续。
在框806,将输入提供给管理工具框架内的其它组件以供处理。主机程序可将输入直接转发到其它组件,如语法分析器。或者,主机程序可通过其主机小命令之一来转发输入。主机小命令可将其特定类型的输入(如,语音)转换成可由管理工具框架识别的一种类型的输入(如,文本串、脚本)。例如,语音输入可以被转换成脚本或命令行串,取决于语音输入的内容。由于每一主机程序负责将其类型的输入转换成可由管理工具框架识别的输入,因此管理工具框架可接受来自任意数量的各种主机组件的输入。另外,管理工具框架提供了一组丰富的实用程序,当输入通过其小命令之一转发时,它们执行数据类型之间的转换。其它组件在输入上执行的处理在下文结合若干其它附图来描述。主机处理在判别框808继续。
在判别框808,判断是否接收到对另外的输入的请求。如果负责处理输入的其它组件之一需要来自用户的另外的输入以完成其处理,则会发生这一情况。例如,可能需要口令来访问某些数据、可能需要特定行动的确认等等。对于某些类型的主机程序(如,语音邮件),这样的请求可能不是适当的。由此,与向用户查询另外的输入相反,主机程序可串行化状态、挂起状态、并发送通知,使得稍后该状态得以恢复并且输入的执行得以继续。在另一变体中,主机程序可在预定的时间段之后提供默认值。如果接收到对另外的输入的请求,则处理循环回到框804,其中获取另外的输入。处理然后通过上述框806和808继续。如果未接收到对另外的输入的请求,且输入已被处理,则处理继续到框810。
在框810,从管理工具框架内的其它组件接收结果。该结果可包括出错消息、状态等等。结果是以对象的形式,它可由管理工具框架内的主机小命令识别和处理。如下文所描述的,对每一主机小命令书写的代码是非常少的。由此,可显示一组丰富的输出,而无需开发成本的巨大投资。处理在框812继续。
在框812,可审阅结果。主机小命令将结果转换成主机程序支持的显示风格。例如,返回的对象可由GUI主机程序使用图形描述来显示,如图标、吠叫狗(barking dog)等。主机小命令提供数据的默认格式和输出。默认格式和输出可使用下文结合图19-23描述的示例性输出处理小命令。在可任选地显示了结果之后,主机处理完成。
用于处理输入的示例性过程
图9所示是用于在图2所示的管理工具框架内执行的处理输入的示例性过程的逻辑流程图。处理在框901开始,其中通过主机程序键入输入,并将其转发到管理工具框架内的其它组件。处理在框902继续。
在框902,从主机程序接收输入。在一个示例性管理工具框架中,输入由语法分析器接收,它对输入进行译码,并定向输入以供进一步处理。处理在判别框904继续。
在判别框904,确定输入是否为脚本。输入可采用脚本或表示命令行的串(后文称为“命令串”)的形式。命令串可表示管道化在一起的一个或多个小命令。即使管理工具框架支持若干不同的主机,然而每一主机提供输入作为脚本或命令串以供处理。如下文可见到的,脚本和命令串之间的交互在本质上是递归的。例如,脚本可具有调用小命令的行。小命令本身可以是脚本。
由此,在判别框904,如果输入是脚本的形式,则处理在框906继续,执行脚本的处理。否则,处理在框908继续,执行命令串的处理。一旦在框906或908执行的处理完成,则输入的处理完成。
脚本的示例性处理
图10所示是用于处理适于在图9所示的处理输入过程中使用的脚本的过程的逻辑流程图。该过程在框1001开始,将输入识别为脚本。脚本引擎和语法分析器彼此通信,以执行以下功能。处理在框1002继续。
在框1002,在脚本上执行预处理。简要地转向图11,示出了一个逻辑流程图,它示出了适于在脚本处理过程1000中使用的脚本预处理过程1100。脚本预处理在框1101开始,并继续到判别框1102。
在判别框1102,判断脚本是否第一次运行。这一判断可以基于从注册表或其它存储机制中获得的信息。脚本从存储机制内识别,并且审阅相关联的数据。如果脚本先前未运行过,则处理在框1104继续。
在框1104,脚本在注册表中注册。这允许关于该脚本的信息被储存,以供管理工具框架内的组件稍后使用。处理在框1106继续。
在框1106,从脚本提取帮助和文档编制信息,并存储在注册表中。再一次,该信息稍后可由管理工具框架内的组件访问。脚本现在已准备好供处理,并且返回到图10中的框1004。
返回到判别框1102,如果过程推断脚本先前已运行,则处理在判别框1108继续。在判别框1108,判断脚本是否在处理过程中失败。该信息可从注册表中获得。如果脚本未失败,则脚本已准备好供处理并返回到图10中的框1004。
然而,如果脚本失败,则处理在框1110继续。在框1110,脚本引擎可通过主机程序通知用户脚本先前已失败。这一通知允许用户决定是继续该脚本还是退出该脚本。如上文结合图8所提到的,主机程序可以用各种方式处理该请求,取决于输入的风格(如,语音、命令行)。一旦从用户接收到另外的输入,脚本或者返回到图10的框1004供处理,或者中止该脚本。
返回到图10的框1004,检索来自脚本的一行。处理在判别框1006继续。在判别框1006,判断该行是否包含任何约束。约束可用预定义的开始字符(例如,括号“[”]]]]]]和对应的结束字符(例如,关闭括号“))))))”)来检测。如果该行包括约束,则处理在框1008继续。
在框1008,应用该行中包括的约束。一般而言,约束提供了管理工具框架内的一种机制,以指定用于脚本中输入的参数的类型以及指定应当在该参数上执行的确认逻辑。该约束不仅应用于参数,也适用于脚本中输入的任一类型的构造,例如变量。由此,约束提供了解释环境内的一种机制,以指定数据类型以及确认参数。在传统的环境中,系统管理员无法形式上测试脚本内输入的参数。应用约束的一个示例性过程在图12中示出。
在判别框1010,判断来自脚本的该行是否包括内建能力。内建能力是不由核心引擎执行的能力。内建能力可以使用小命令来处理,或者使用诸如内嵌函数来处理。如果该行不具有内建能力,则处理在判别框1014继续。否则,处理在框1012继续。
在框1012,处理在脚本的行上提供的内建能力。示例内建能力可包括诸如“if”语句、“for”循环、开关等控制构造的执行。内建能力也可包括赋值类型语句(例如,a=3)。一旦处理了内建能力,处理在判别框1014继续。
在判别框1014,判断脚本的行是否包括命令串。该判断基于行上的数据是否与注册的命令串相关联并且是否与潜在的小命令调用的句法相关联。如上所述,命令串和脚本的处理可以在本质上是递归的,因为脚本可包括命令串,而命令串可执行小命令,小命令本身是脚本。如果行不包括命令串,则处理在判别框1018。否则,处理在框1016继续。
在框1016,处理命令串。总体上,命令串的处理包括由语法分析器识别小命令类,以及将对应的小命令对象传递到核心引擎以供执行。命令串也可包括管道化的命令串,它被语法分析成若干个别的小命令对象,并由核心引擎个别地处理。下文结合图14描述用于处理命令串的一个示例性过程。一旦处理了命令串,处理在判别框1018继续。
在判别框1018,判断脚本中是否有另一行。如果脚本中有另一行,则处理循环回到框1004,并如上文在框1004-1016中描述的继续。否则,处理完成。
图12示出了应用框1008中的约束的示例性过程。该过程在框1201开始,检测到脚本或命令行的命令串中的约束。当约束在脚本内时,约束和相关联的构造可在同一行上出现,或在单独的行上出现。当约束在命令串内时,约束和相关联的构造在行指示符(如,回车键)的末端之前出现。处理在框1202继续。
在框1202,从解释环境中获取约束。在一个示例性管理工具环境中,语法分析器对输入进行译码,并确定约束的出现。约束可以来自以下类别之一:谓词伪指令、数据确认伪指令、数据生成伪指令、处理伪指令、编码伪指令和文档编制伪指令。在一个示例性语法分析句法中,伪指令用方括号包围,并且描述了它们之后的构造。构造可以是函数、变量、脚本等等。
如下文将描述的,尽管使用了伪指令,然而允许脚本作者简单地键入脚本或命令行内(即,解释环境)的参数并在参数上执行处理,而无需脚本作者生成任何底层逻辑。处理继续到框1204。
在框1204,所获取的约束储存在相关联的构造的元数据中。相关联的构造被标识为遇到一个或多个属性标记(表示约束的标记)之后的第一个非属性标记。处理继续到框1206。
在框1206,只要在脚本或命令行内遇到构造,就将元数据内定义的约束应用到该构造。约束可包括数据类型、谓词伪指令1210、文档编制伪指令1212、语法分析伪指令1214、数据生成伪指令1216、数据确认伪指令1218以及对象处理和编码伪指令1220。指定数据类型的约束可指定管理工具框架所运行的系统支持的任何数据类型。谓词伪指令1210是只是处理是否应当发生的伪指令。由此,谓词伪指令1210确保环境对于执行是正确的。例如,脚本可包括以下谓词伪指令:
[PredicateScript(″isInstalled″,″ApplicationZ″)]
该谓词伪指令确保在运行脚本前计算装置上安装了正确的应用程序。通常,系统环境变量可被指定为谓词伪指令。来自伪指令类型1212-1220的示例性伪指令在表1-5中示出。脚本的处理然后完成。
由此,应用解释环境内的类型和约束的本过程允许系统管理员容易地指定类型、指定确认要求等,而无需书写用于执行这一处理的底层逻辑。以下是在如下指定的命令串上执行的约束处理的一个示例:
[Integer][ValidationRange(3,5)]$a=4
有两种通过由“[]”表示的属性标记指定的约束。第一个属性标记指示了该变量是整数类型,而第二个属性标记指示变量$a的值必须包括在3到5之间。示例命令串确保了如果变量$a在随后的命令串或行中被赋值,则将对照两个约束来校验变量$a。由此,以下命令串的每一个都将导致错误:
$a=231
$a=″apple″
$a=$(get/location)
约束在管理工具框架的不同阶段被应用。例如,适用性伪指令、文档编制伪指令以及语法分析准则伪指令在语法分析器内非常早期的阶段处理。数据生成伪指令和确认伪指令一旦在语法分析器完成了对所有输入参数的语法分析之后在引擎内处理。
以下表格示出了各种类别的代表性伪指令,以及由管理工具环境响应于伪指令执行的处理的解释。
  名称   描述
  PrerequisiteMachineRoleAttribute   通知外壳元素是否仅在某些机器角色(如,文件服务器、邮件服务器)中使用。
  PrerequisiteUserRoleAttribute   通知外壳元素是否仅在某些用户角色(如,域管理员、备份操作员)中使用。
  PrerequisiteScriptAttribute   通知外壳该脚本将在执行实际的命令或参数之前运行。可以对参数确认使用。
  PrerequisiteUITypeAttribute   这用于在执行前核查用户界面是否可用。
表1适用性伪指令
Figure C20048000129600261
Figure C20048000129600271
表2语法分析管道伪指令
  名称   描述
  DocumentNameAttribute   提供参考用于交互或帮助的元素的名字。
  DocumentShortDescriptionAttribute   提供了元素的简要描述。
  DocumentLongDescriptionAttribute   提供了元素的详细描述。
  DocumentExampleAttribute   提供了元素的示例。
  DocumentSeeAlsoAttribute   提供了相关元素的列表。
  DocumentSynopsisAttribute   提供了元素的文档编制信息。
表3文档编制伪指令
  名称   描述
  ValidationRangeAttribute   指定了参数必须在某一范围内。
  ValidationSetAttribute   指定参数必须在某一集合内。
  ValidationPatternAttribute   指定参数必须符合某一模式。
  ValidationLengthAttribute   指定串必须在大小范围内。
  ValidationTypeAttribute   指定参数必须是某一类型。
  ValidationCountAttribute   指定输入项必须是某一数字。
  ValidationFileAttribute   指定文件的某些属性。
  ValidationFileAttributesAttribute   指定文件的某些属性。
  ValidationFileSizeAttribute   指定文件必须在指定的范围内。
  ValidationNetworkAttribute   指定给定的网络实体支持某些属性。
  ValidationScriptAttribute   指定在使用元素前要评估的条件。
  ValidationMethodAttribute   指定在使用元素前要评估的条件。
表4数据确认伪指令
  名称   描述
  ProcessingTrimStringAttribute   指定串的大小限制。
  ProcessingTrimCollectionAttribute   指定集合的大小限制。
  EncodingTypeCoercionAttribute   指定对象要被编码的类型。
  ExpansionWildcardsAttribute   提供允许通配符操作的机制。
表5处理和编码伪指令
当示例性管理工具在.NETTM框架内运作时,每一类别具有从基础类别类(如,CmdAttribute)导出的积累。该基础类别类从System.Attribute类导出。每一类别具有预定义的函数(如,attrib.func()),它由语法分析器在类别处理期间调用。脚本作者可创建从自定义类别类(如,CmdCustomAttribute)导出的自定义类别。脚本作者也可通过从类别的基础类别类导出伪指令类,然后用其实现覆盖预定义的函数,来扩展现有的类别。脚本作者也可覆盖伪指令,并向预定义的伪指令集添加新的伪指令。
这些伪指令的其它处理可以储存在可由语法分析器访问的外部数据存储中。管理工具框架查找注册的类别,并对该类别中的每一伪指令调用函数(如,ProcessCustomDirective)。由此,类别处理的顺序通过将类别执行信息储存在持久存储中可以是动态的。在不同的处理阶段,语法分析器在持久存储中进行核查,以判断是否有任何元数据类别需要在那时执行。这允许类别通过从持久存储中移除该类别条目来容易地被排斥。
命令串的示例性处理
现在描述用于处理命令串的一个示例性过程。图13是概括地示出了通过图2所示的语法分析器220和核心引擎224处理命令串1350的功能流程图。示例性命令串1350管道化了若干命令(即,process(进程)命令1360、where(其中)命令1362、sort(排序)命令1364和table(表格)命令1366)。命令1350可将输入参数传输到命令的任一个(例如,“handlecount>400”被传递到where命令1362)。可以注意到,process命令1360不具有任何相关联的输入参数。
在过去,每一命令负责对与该命令相关联的输入参数进行语法分析、判断输入参数是否有效、并且如果输入参数无效则发出出错消息。由于命令通常由各个程序员书写,因此命令行上输入参数的句法不是非常一致的。另外,如果出现出错,则即使是对同一差错,出错消息在命令之间也不是非常一致的。
例如,在UNIX环境中,“ls”命令和“ps”命令在它们之间具有许多不一致性。尽管两者都接受选项“-w”,然而“-w”选项由“ls”命令用于表示页的宽度,而“-w”选项由“ps”命令表示打印出宽的输出(本质上,忽略页宽度)。与“ls”和“ps”命令相关联的帮助页面也具有若干不一致性,如在一个中有加粗的选项而在另一个中没有、在一个中对选项按字母表排序而在另一个中没有、需要某些选项具有短划线而某些选项没有。
本发明的管理工具框架提供了更一致的方法,并最小化了每一开发者必须书写的重复代码量。管理工具框架200提供了句法(如,语法)、对应的语义(如,字典)、以及参考模型,以使开发者能够容易地利用管理工具框架200提供的公用功能。
在进一步描述本发明之前,提供对贯穿本说明书出现的其它术语的定义。输入参数指小命令的输入字段。形式参数指传递到小命令的输入参数,它等效于argv数组中的单个串,或作为小命令对象中的单个元素传递。如下文所描述的,小命令提供了用于指定语法的机制。该机制可以直接或间接提供。形式参数是命令名后的选项、选项形式参数或操作数之一。形式参数的示例基于以下命令行给出:
Findstr/i/d:\winnt;\winnt\system32aa*b*.ini
在以上命令行中,“findstr”是形式参数0,“/i”是形式参数1,“/d:\winnt;\winnt\system32”是形式参数2,“aa*b”是形式参数3,“*.ini”是形式参数4。“选项”是小命令的形式参数,通常用于指定对程序的默认行为的改变。继续上述命令行的示例,“/i”和“/d”是选项。“选项形式参数”是跟随在某些选项后的一个参数。在某些情况下,“选项形式参数”作为选项被包括在同一形式参数串内。在其它情况下,选项形式参数作为下一形式参数被包括。再次参考上述命令行,“winnt;\winnt\system32”是选项形式参数。“操作数”是小命令的形式参数,通常向程序提供完成程序处理所必需的信息的对象。在命令行中,操作数一般在选项之后。再次参考上述示例命令行,“aa*b”和“*.ini”是操作数。“可语法分析流”包括形式参数。
参考图13,语法分析器220将可语法分析流(如,命令串1350)语法分析成要素部分1320-1326(如,where部分1322)。每一部分1320-1326与小命令1330-1336之一相关联。语法分析器220和引擎224执行各种处理,如语法分析、参数确认、数据生成、参数处理、参数编码和参数文档编制。由于语法分析器220和引擎224在命令行的输入参数上执行公用的功能,因此管理工具框架200能够向用户发出一致的出错消息。
如可以认识到的,依照本发明的管理工具框架书写的可执行小命令1330-1336需要比现有管理环境中的命令更少的代码。每一可执行小命令1330-1336使用其相应的构成部分1320-1326来标识。另外,每一可执行小命令1330-1336输出对象(由箭头1340、1342、1344和1346表示),它们是作为对下一管道化小命令的输入对象(由箭头1341、1343和1345表示)的输入。这些对象可以通过向对象传递引用(例如,句柄)来输入。可执行小命令1330-1336然后可在所传入的参数上执行额外的处理。
图14是更详细地示出了适于在处理图9所示的输入的过程中使用的命令串的处理的逻辑流程图。命令串处理在框1401开始,其中语法分析器或脚本引擎识别输入中的命令串。一般而言,核心引擎执行小命令的数据流的设置和排序。对一个小命令的设置和排序在下文描述,但是可适用于管道中的每一小命令。处理在框1404继续。
在框1404,识别小命令。小命令的识别可以通过注册来进行。核心引擎判断小命令是本地还是远程的。小命令可以在以下位置中执行:1)在管理工具框架的应用程序域内;2)在与管理工具框架相同的进程的另一应用程序域内;3)在同一计算装置的另一进程内;或者4)在远程计算装置内。在同一进程内操作的小命令之间的通信是通过对象来进行的。在不同的进程内操作的小命令之间的通信是通过串行化的结构化数据格式来进行的。一个示例性串行化的结构化数据格式基于可扩充标记语言(XML)。处理在框1406继续。
在框1406,创建小命令对象的实例。用于创建小命令的实例的一个示例性过程在下文结合图15描述。一旦创建了小命令对象,处理在框1408继续。
在框1408,填充与小命令对象相关联的属性。如上所述,开发者声明小命令类内或外部源内的属性。简言之,管理工具框架基于对属性声明的名字和类型将传入的对象译码成从小命令类例示的小命令。如果类型不同,则可通过扩展数据类型管理器来强制类型。如先前所提到的,在管道化的命令串中,每一小命令的输出可以是对象句柄的列表。下一小命令可输出这一对象句柄列表、执行处理、并将另一对象句柄列表传递到下一小命令。另外,如图7所示,输入参数可以被指定为来自命令行。用于填充与小命令相关联的属性的一个示例性方法在下文结合图16描述。一旦填充了小命令,处理在框1410继续。
在框1410,执行小命令。总体上,由小命令提供的处理至少被执行一次,这包括对小命令的每一输入对象的处理。由此,如果小命令是管道化的命令串中的第一个小命令,则处理被执行一次。对于后续的小命令,对传递到小命令的每一对象执行处理。用于执行小命令的一个示例性方法在下文结合图5描述。当输入参数仅来自命令行时,小命令的执行使用基础小命令类提供的默认方法。一旦小命令完成执行,处理前进到框1412。
在框1412,小命令被清除。这包括调用相关联的小命令对象的析构函数,它负责解除分配存储器等等。然后,命令串的处理完成。
用于创建小命令对象的示例性过程
图15所示是用于创建适于在图14所示的命令串的处理中使用的小命令对象的示例性过程的逻辑流程图。在这一点上,开发了小命令数据结构,并指定了属性和期望的输入参数。小命令被编译并已被注册。在注册期间,类名(即,小命令名)被写入注册存储中,并且储存了与小命令相关联的元数据。过程1500在框1501开始,语法分析器接收到指示小命令的输入(例如,按键)。语法分析器可通过从注册表内查找该输入,并将该输入与注册的小命令之一相关联,以将输入识别为小命令。处理前进到框1504。
在框1504,读取与小命令对象相关联的元数据。元数据包括与小命令相关联的伪指令的任一个。伪指令可应用于小命令本身或一个或多个参数。在小命令注册期间,注册代码将元数据注册到永久存储中。元数据可以储存在串行化格式的XML文件、外部数据库等中。类似于脚本处理过程中伪指令的处理,每一类别的伪指令在不同的阶段处理。每一元数据伪指令处理其自己的错误处理。处理在框1506继续。
在框1506,基于识别的小命令类例示小命令对象。处理在框1508继续。
在框1508,获取关于小命令的信息。这可以通过反射或其它手段发生。信息是关于期望的输入参数。如上所述,被声明为公用的参数(例如,公用串Name730)对应可以是在命令行上的命令串中指定或在输入流中提供的期望输入参数。管理工具框架通过图18描述的扩展类型管理器提供用于向调用者返回信息(在需要的基础上)的公用接口。处理在框1510继续。
在框1510,应用适用性伪指令(例如,表1)。适用性伪指令确保了该类在某些机器角色和/或用户角色中使用。例如,某些小命令可能只能由域管理员使用。如果未满足适用性伪指令之一中指定的约束,则出现差错。处理在框1512继续。
在框1512,使用元数据来提供智能感知。在处理的这一点上,尚未输入整个命令串。然而,管理工具框架知道可用的小命令。一旦确定了小命令,则管理工具框架知道在小命令对象上反射所允许的输入参数。由此,一旦提供了小命令名字的可消除歧义的部分,则管理工具框架可自动完成小命令,然后一旦在命令行上键入了输入参数的可消除歧义的部分,则自动完成输入参数。自动完成可以在一旦输入参数的部分能够明确地识别输入参数之一之后发生。另外,自动完成也可在小命令名字和操作数上发生。处理在框1514继续。
在框1514,处理等待,直到输入了小命令的输入参数。这可在一旦用户例如通过敲击回车键指示了命令串的结束之后发生。在脚本中,新行指示命令串的结束。这一等待可包括从用户获取关于参数的额外信息并应用其它伪指令。当小命令是管道化参数之一时,处理可立即开始。一旦提供了必要的命令串和输入参数,处理完成。
用于填充小命令的示例性过程
用于填充小命令的示例性过程在图16中示出,并现在结合图5来描述。在一个示例性管理工具框架中,核心引擎执行处理来填充小命令的参数。处理在创建了小命令的实例之后在框1601开始。处理在框1602继续。
在框1602,检索小命令中声明的参数(例如,ProcessName(进程名))。基于对小命令的声明,核心引擎识别出传入的输入对象将提供名为“ProcessName”的属性。如果传入的属性的类型不同于参数声明中指定的类型,则该类型将通过扩展类型管理器来强制。强制数据类型的过程在下文名为“示例性扩展类型管理器处理”一节中解释。处理继续到框1603。
在框1603,获取与参数相关联的属性。属性标识了参数的输入源是否为命令行或者它是否来自管道。处理继续到判别框1604。
在判别框1604,判断属性是否将输入源指定为命令行。如果输入源是命令行,则处理在框1609继续。否则,处理在判别框1605继续。
在判别框1605,判断是应当使用声明中指定的属性名还是应当使用属性名的映射。这一判断基于命令输入是否指定了参数的映射。以下行示出了参数“ProcessName”到传入对象的成员“foo”的示例性映射:
$get/process|where han*-gt 500|stop/process-ProcessName<-foo处理在框1606继续。
在框1606,应用映射。映射将期望参数的名字从“ProcessName”替换成“foo”,它然后由核心引擎用于对传入对象进行语法分析并识别正确的期望参数。处理在框1608继续。
在框1608,查询扩展类型对象以查找传入对象内的参数的值。如结合扩展类型管理器所解释的,扩展类型管理器采用参数名并使用反射来识别传入对象内具有参数名的参数。如有必要,扩展类型管理器也可对参数执行其它处理。例如,扩展类型管理器可通过上述的转换机制将数据类型强制成期望的数据类型。处理继续到框1610。
返回到框1609,如果属性指定了输入源是命令行,则获取来自命令行的数据。获取来自命令行的数据可以通过扩展类型管理器来执行。处理然后继续到判别框1610。
在判别框1610,判断是否存在另一期望参数。如果存在另一期望参数,则处理循环回到框1602,并如上所述地继续。否则,处理完成并返回。
由此,如图所示,小命令担当用于切碎传入数据以获取期望参数的模版。另外,期望参数是在不知道提供期望参数的值的传入对象的类型的情况下获取的。这比传统的管理环境要困难得多。传统的管理环境是紧绑定的,并需要该对象的类型在编译时是已知的。另外,在传统环境中,期望参数将按传值或按传址被传递到函数。由此,本发明的语法分析(例如,“切碎”)机制允许程序员指定参数的类型,而无需他们具体地知道如何获取这些参数的值。
例如,给定对小命令Foo的以下声明:
Class Foo:Cmdlet
{
     string Name;
     Bool Recurse;
}
命令行句法可以是以下的任一种:
$Foo-Name:(string)-Recurse:True
$Foo-Name<string>-Recurse True
$Foo-Name(string)
该组规则可由系统管理员修改,以产生期望的句法。另外语法分析器可支持多组规则,使得用户可使用一个以上句法。本质上,与小命令构造相关联的语法(例如,string Name和Bool Recurse)驱动语法分析器。
一般而言,语法分析伪指令描述了作为命令串输入的参数应当如何映射到小命令对象中识别的期望参数。核查输入参数类型以判断是否正确。如果输入参数类型不正确,则可强制输入参数成为正确。如果输入参数类型不正确并且不能被强制,则打印使用出错。使用出错允许用户变得知晓期望的正确句法。使用出错可从文档编制伪指令获取描述句法的信息。一旦映射或验证了输入参数类型,则填充小命令对象实例中对应的成员。当填充成员时,扩展类型管理器提供了对输入参数类型的处理。简言之,处理可包括属性路径机制、关键字机制、比较机制、转换机制、通配符处理机制、关系机制以及属性集机制。这些机制的每一个在下文名为“扩展类型管理器处理”一节中详细描述,它也包括了说明性示例。
用于执行小命令的示例性过程
用于执行小命令的示例性过程在图7中示出,并现在描述。在一个示例性管理工具环境中,核心引擎执行小命令。如上所述,对每一输入对象执行第二方法1440内的代码1442。处理在框1701开始,其中已填充了小命令。处理在框1702继续。
在框1702,检索来自代码542的语句用于执行。处理在判别框1704继续。
在判别框1704,判断语句内是否包括挂钩。简单地转向图5,挂钩可包括调用由核心引擎提供的API。例如,图5中小命令500的代码542内的语句550调用了指定必要参数、第一个串(如,“PID=”)以及参数(如,PID)的confirmprocessing(确认处理)API。返回到图17,如果语句包括挂钩,则处理继续到框1712。由此,如果指定了调用confirmprocessing API的指令,则小命令在由操作环境提供的备选执行模式中操作。否则,处理在框1706继续,并且执行在“正常”模式中继续。
在框1706,处理该语句。处理然后前进到判别框1708。在框1708,判断代码是否包括另一语句。如果有另一语句,则处理循环回到框1702,以获取下一语句,并如上所述地前进。否则,处理继续到判别框1714。
在判别框1714,判断是否有另一输入对象要处理。如果有另一输入对象,则处理继续到框1716,其中用来自下一对象的数据填充小命令。对下一对象执行图16中描述的填充过程。处理然后循环回到框1702,并如上所述地前进。一旦处理了所有的对象,用于执行小命令的过程完成并返回。
返回到判别框1704,如果语句包括挂钩,则处理继续到框1712。在框1712,处理由管理工具环境提供的附加特征。处理在判别框1708继续,并如上所述地继续。
现在结合图6所示的示例性数据结构600描述框1712内执行的附加处理。如上所述,在命令基类600内,可以声明对应于附加的期望输入参数的参数(如,开关)。
开关包括预定义的串,并且当被识别时,指示核心引擎向小命令提供附加功能。如果在命令输入中指定了参数verbose 610,则执行verbose语句614。以下是包括verbose开关的命令行的一个示例:
$get/process |where″han*-gt 500″|stop/process-verbose
一般而言,当在命令输入内指定“-verbose”时,核心引擎对每一输入对象执行该命令,并将对每一输入对象执行的实际命令转发到主机程序用于显示。以下是当在示例性管理工具环境中执行上述命令行时生成的输出的示例:
$stop/process PID=15
$stop/process PID=33
如果在命令输入中指定了参数whatif 620,则执行whatif语句624。以下是包括whatif开关的命令行的示例:
$get/process |where″han*-get 500″|stop/process-whatif
一般而言,当指定“-whatif”时,核心引擎实际上不执行代码542,而是相反将要被执行的命令发送到主机程序用于显示。以下是当在本发明的管理工具环境中执行上述命令行时生成的输出示例:
$stop/process PID=15
$stop/process PID=33
如果在命令输入中指定了参数confirm 630,则执行confirm语句634。以下是包括confirm开关的命令行的一个示例:
$get/process|where″han*-get 500″|stop/process-confirm
一般而言,当指定了“-confirm”时,核心引擎请求关于是否继续命令的额外用户输入。以下是当在本发明的管理工具环境中执行上述命令行时生成的输出示例。
$stop/process PID 15
Y/N Y
$stop/process PID 13
Y/N N
如上所述,示例性数据结构600也可包括判断所请求的用于执行的任务是否应当被允许的安全性方法640。在传统的管理环境中,每一命令负责核查执行该命令的人是否具有足够的特权来执行该命令。为执行这一核查,需要广泛的代码来访问来自若干来源的信息。由于这些复杂度,许多命令不执行安全性核查。本发明的管理工具环境的发明人认识到,当在命令输入中指定任务时,用于执行安全性核查的必要信息在管理工具环境内是可用的。因此,管理工具框架执行安全性核查,而不需要来自工具开发者的复杂代码。该安全性核查可对在其小命令内定义挂钩的任一小命令执行。或者,挂钩可以是可任选的输入参数,它可在命令输入中指定,类似于上述的verbose参数。
实现安全性核查以支持基于角色的认证,它一般被定义为基于用户的角色控制哪些用户具有对资源的访问的系统。由此,向每一角色分配对不同资源的某些访问权限。然后将用户分配给一个或多个角色。一般而言,基于角色的认证集中在三项上:原则、资源和行动。原则标识了谁请求了在资源上执行行动。
本发明的发明人认识到,所请求的小命令对应于要执行的行动。另外,发明人理解,其中执行管理工具框架的进程的所有者对应于原则。此外,发明人理解,资源是在小命令中指定的。因此,由于管理工具框架具有对这些项的访问,因此发明人认识到,可以从管理工具框架内执行安全性核查,而不需要工具开发者实现安全性核查。
安全性核查的操作可以在当小命令内请求附加功能的任一时刻通过使用诸如confirmprocessing API等挂钩来执行。或者,安全性核查可以通过核查在命令行上是否输入了类似于verbose、whatif和confirm等安全开关来执行。对于任一实现,checkSecurity(核查安全性)方法调用了由安全性进程(未示出)提供的API,该安全性进程提供了用于判断谁被允许的一组API。安全性进程采用由管理工具框架提供的信息,并提供指示任务是否可被完成的结果。管理工具框架然后可提供出错或仅仅停止任务的执行。
由此,通过在小命令内提供挂钩,开发者可使用由管理工具框架提供的附加处理。
示例性扩展类型管理器处理
如上文结合图18提到的,扩展类型管理器可在提供的对象上执行附加的处理。附加处理可以在语法分析器220、脚本引擎222或管道处理器402处执行。附加处理包括属性路径机制、关键字机制、比较机制、转换机制、通配符处理机制、关系机制以及属性集机制。本领域的技术人员可以理解,扩展类型管理器也可以用其它处理来扩展,而不脱离本发明的范围。现在描述附加处理机制的每一个。
首先,属性路径机制允许一个串导航对象的属性。在当前反射系统中,查询可查询对象的属性。然而,在本发明的扩展类型管理器中,可以指定提供到连续的对象属性的导航路径的串。以下是属性路径P1.P2.P3.P4的说明性句法。
每一组件(例如,P1、P2、P3和P4)包括可表示属性、具有参数的方法、不是有参数的方法、字段、XPATH等等的串。XPATH指定了查询串,以搜索元素(例如,“/Foo@=13”。在该串内,可以包括特殊的字符以具体地指示组件的类型。如果串不包含特殊的字符,则扩展类型管理器可执行查找以确定组件的类型。例如,如果组件P1是对象,则扩展类型管理器可查询P2是否为对象的属性、方法上的对象、对象的字段或属性集。一旦扩展类型管理器标识了P2的类型,则执行依照该类型的处理。如果组件不是上述类型之一,则扩展类型管理器可进一步查询扩展源,以判断是否有将P1的类型转换成P2的类型的转换功能。现在将使用说明性命令串描述这些和其它查找,并示出代表性输出。
以下是包括属性路径的说明性串:
$get/process|/where hand*-gt>500|format/table name.toupper,ws.kb,exe.*ver.*.description.tolower.trunc(30)
在上述说明性串中,有三个属性路径:(1)“name.toupper”;(2)“ws.kb”;以及(3)“exe*.ver*.description.tolower.trunc(30)”。在描述这些属性路径之前,应当注意,“name”、“ws”和“exe”指定了表格的属性。另外,应当注意,这些属性的每一个是传入对象的直接属性,它们最初由“get/process”生成,然后通过各种小命令管道化。现在描述三个属性路径的每一个所涉及的处理。
在第一个属性路径(即,“name.toupper”)中,name是传入对象的直接属性,并且本身也是对象。扩展类型管理器使用上述优先级查找来查询系统,以确定toupper的类型。扩展类型管理器发现toupper不是属性。然而,toupper可以是由串类型继承的方法,以将串内的小写字母转换成大写字母。或者,扩展类型管理器可能已查询了扩展的元数据,以判断是否有可将name对象转换成大写的第三方代码。在找出组件类型之后,依照该组件类型执行处理。
在第二个属性路径中(即,“ws.kb”),“ws”是传入对象的直接属性,并本身也是对象。扩展类型管理器确定“ws”是整数。然后,扩展类型管理器查询kb是否是整数的属性、kb是否是整数的方法、并最终查询是否有任何代码知道如何采用整数并将该整数转换成kb类型。注册第三方代码以执行该转换,并且执行该转换。
在第三个属性路径中(即,“exe*.ver*.description.tolower.trunc(30)”),有若干个组件。第一个组件(“exe*”)是传入对象的直接属性,并且也是对象。再一次,扩展类型管理器在查找查询中向下前进,以处理第二个组件(“ver*”)。“exe*”对象不具有“ver*”属性或方法,因此扩展类型管理器查询扩展的元数据,以判断是否有被注册来将可执行名字转换成版本的任何代码。对于该示例,存在这一代码。代码可采用可执行的名字串,并使用它来打开文件,然后访问版本块对象,并返回版本块对象的描述属性(第三个组件(“description”))。扩展类型管理器然后对第四个组件(“tolower”)和第五个组件(“trunc(40)”)执行该同一查找机制。由此,如所示,扩展类型管理器可在命令串上执行相当精细的处理,而无需管理员书写任何特定代码。表1示出了对说明性串生成的输出。
Name.toupper ws.kb exe*.ver*.description.tolower.trunc(30)
ETCLIENT29,964etclient
CSRSS    6,944
SVCHOST    28,944generic host process for win32
OUTLOOK    18,556office outlook
MSMSGS        13,248messenger
表1
另一查询机制1824包括关键字。关键字标识了产生唯一数据类型的实例的一个或多个属性。例如,在数据库中,一列可以被标识为可唯一地标识每一行(例如,社会保障号)的关键字。关键字储存在与数据类型相关联的类型元数据1840中。该关键字然后可由扩展类型管理器在处理该数据类型的对象时使用。数据类型可以是扩展的数据类型或现有的数据类型。
另一查询机制824包括比较机制。比较机制比较两个对象。如果两个对象直接支持比较功能,则执行直接支持的比较功能。然而,如果没有一个对象支持比较功能,则扩展类型管理器可在类型元数据中查找被注册来支持两个对象之间的比较的代码。下文在表2中示出了调用比较机制的一系列说明性命令行串,以及对应的输出。
$$a=$(get/date)
$start/sleep 5
$$b=$(get/date
compare/time$a$b
Ticks    :51196579
Days    :0
Hours    :0
Milliseconds    :119
Minutes    :0
Seconds    :5
TotalDays    :5.92552997685185E-05
TotalHours:0.00142212719444444
TotalMilliseconds:5119.6579
TotalMinutes    :0.00853276316666667
TotalSecond    :5.1196579
表2
书写compare/time小命令以比较两个datetime对象。在这一情况下,DateTime对象支持IComparable接口。
另一查询机制1824包括转换机制。扩展类型管理器允许注册规定其执行特定转换的能力的代码。然后,当输入类型A的对象,并且小命令指定类型B的对象,扩展类型管理器可使用注册的转换之一执行转换。扩展类型管理器可执行一系列转换以将类型A强制成类型B。上述属性路径(“ws.kb”)示出了转换机制。
另一查询机制1824包括通配符处理机制。通配符处理指的是串内通配符字符。通配符处理机制输入具有通配符字符串并产生一组对象。扩展类型管理器允许要被注册指定通配符处理的代码。上述属性路径
(“exe*.ver*.description.tolower.trunc(30)”)示出了通配符处理机制。注册的进程可提供对文件名、文件对象、传入属性等的通配符处理。
另一查询机制1824包括属性集机制。属性集机制允许对一组属性定义名字。管理员然后可指定命令串内的名字,以获得属性集。属性集可以用各种方式来定义。在一种方法中,诸如“?”等预定义参数可以作为对小命令的输入参数而被输入。操作环境在识别预定义的参数之后列出传入对象的所有属性。列表可以是允许管理员容易地核查(例如,“点击”)期望的属性以及对属性集命名的GUI。属性集信息然后可储存在扩展的元数据中。以下在表3中示出了调用属性集机制的说明性串以及对应的输出:
$get/process|where han*-gt>500|format/table config
在这一说明性串中,定义了名为“config”属性集,以包括名字属性、进程id属性(Pid)以及优先级属性。该表的输出示出如下。
Name            Pid Prioritv
ETClient        3528Normal
csrss           528Normal
svchost         848Normal
OUTLOOK 2,772Normal
msmsgs          2,584Normal
表3
另一查询机制1824包括关系机制。与支持一种关系(即,继承)的传统类型系统相反,关系机制支持表达类型之间的一个以上关系。再一次,这些关系被注册。关系可包括找出对象消耗的项,或找出消耗对象的项。扩展类型管理器可访问描述各种关系的本体论。使用扩展的元数据和代码,可描述用于访问诸如OWL、DAWL等的任何本体论服务的规范。以下是使用关系机制的说明性串的一部分:.OWL:″string″。
“OWL”标识符标识了本体论服务,而“string”指定了本体论服务内的特定串。由此,扩展类型管理器可访问本体论服务提供的类型。
用于显示命令行数据的示例性过程
本发明的机制提供了一种数据驱动的命令行输出。数据的格式化和输出由小命令管道中的一个或多个小命令提供。通常,这些小命令包括在上文结合图2描述的非管理小命令中。小命令可包括格式化(format)小命令、标记(markup)小命令、转换(convert)小命令、变换(transform)小命令以及输出(out)小命令。
图19图形地描绘了管道内这些小命令的示例性序列1901-1907。第一序列1901示出输出小命令1910为管道内的最后一个小命令。以上文对于其它小命令描述的同一方式,输出小命令1910接受由管道内的其它小命令生成和处理的管道对象流。然而,与大多数小命令相反,输出小命令1910不为其它小命令发出管道对象。相反,输出小命令1910负责呈现/显示由管道生成的结果。每一输出小命令1910与一输出目的地相关联,如设备、程序等。例如,对于控制台设备,输出小命令1910可被指定为out/console(输出/控制台);对于内联网浏览器,输出小命令1910可被指定为out/browser(输出/浏览器);对于窗口,输出小命令1910可被指定为out/window(输出/窗口)。每一特定的输出小命令熟悉其相关联目的地的性能。场所信息(例如,日期和货币格式)由输出小命令1910处理,除非管道中转换小命令超过输出小命令。在这一情况下,转换小命令处理本地信息。
每一主机负责支持某些输出小命令,如out/console。主机也支持任一目标专用主机小命令(例如,out/chart,它将输出定向到由电子表格应用程序提供的图表)。另外,主机负责提供结果的默认处理。这一序列中的输出小命令可决定通过调用其它输出处理小命令(如格式化/标记/转换/变换)来实现其行为。由此,输出小命令可隐含地将序列1901修改成其它序列的任一个,或可添加其自己的附加格式化/输出小命令。
第二序列1902示出了格式化小命令1920在输出小命令1910之前。对于这一序列,格式化小命令1920接受由管道内的其它小命令生成和处理的管道对象流。总体上,格式化小命令1920提供了选择显示属性的方式以及指定诸如形状、列宽度、页眉、页脚等页面布局的方式。形状可包括表格、宽列表、栏式列表等等。另外,格式化小命令1920可包括总计或总和的计算。由格式化小命令1920执行的示例性处理在下文结合图20描述。简言之,格式化小命令除发出管道对象之外还发出格式化对象。格式化小命令可由输出小命令(例如,序列1902中的输出小命令1902)通过扩展类型管理器或其它机制来向下游识别。输出小命令1920可选择使用发出的格式化对象或可选择忽略它们。输出小命令基于显示信息中指定的页面布局数据确定页面布局。在某些情况下,对页面布局的修改可由输出小命令指定。在一个示例性过程中,输出小命令可通过找出预定数量对象的每一属性的最大长度(例如,50)并将列宽度设为该最大长度,来确定未指定的列宽度。格式化对象包括格式化信息、页眉/页脚信息等等。
第三序列1903示出了格式化小命令1920在输出小命令1910之前。然而,在第三序列1903中,在格式化小命令1920和输出小命令1910之间管道化了标记小命令1930。标记小命令1930提供了用于向选择的参数添加属性注释(例如,字体、颜色)的机制。由此,标记小命令1930出现在输出小命令1910之前。属性注释可以使用“阴影属性袋(shadow property bag)”来实现,或通过在属性袋中添加自定义名字空间中的属性注释来实现。只要标记注释可在处理格式化小命令1920的过程中维护,标记小命令1930就可出现在格式化小命令1920之前。
第四序列1904再次示出了格式化小命令1920在输出小命令1910之前。然而,在第四序列1904中,在格式化小命令1920和输出小命令1910之间管道化了转换小命令1940。转换小命令1940也被配置成处理由格式化小命令1920发出的格式化对象。转换小命令1940将管道化的对象转换成基于特定编码的格式化对象。转换小命令1940与该特定的编码相关联。例如,将管道化对象转换成现用目录对象(ADO)的转换小命令1940可以在命令行上被声明为“convert/AD0”。同样,将管道化对象转换成用逗号分隔的值(csv)的转换小命令1940可在命令行上被声明为“convert/csv”。某些格式化小命令1940(例如,convert/XML和convert/html)可以是阻断的小命令,这意味着所有管道化对象在执行转换之前接收。通常输出小命令1920可确定是否使用由格式化对象提供的格式化信息。然而,当转换小命令1920出现在输出小命令1920之前时,实际的数据转换已经在输出小命令接收对象之前发生。因此,在这一情况下,输出小命令不能忽略该转换。
第五序列1905示出了该顺序的格式化小命令1920、标记小命令1930、转换小命令1940以及输出小命令1910。由此,这示出了标记小命令1930可发生在转换小命令1940之前。
第六序列1906示出了格式化小命令1920、特定转换小命令(例如,convert/xml小命令1940’)、特定的变换小命令(例如,transfrom/xslt小命令1950)以及输出小命令1910。convert/xml小命令1940’将管道化的对象转换成可扩展标记语言(XML)文档。transform/xslt小命令1950使用可扩充样式语言(XSL)样式表将XML文档变换成另一XML文档。变换过程通常被称为可扩充样式语言变换(XSLT),其中,XSL处理器读取XML文档,并遵循XSL样式表中的指令来创建新的XML文档。
第七序列1907示出了格式化小命令1920、标记小命令1930、特定的转换小命令(例如,convert/xml小命令1940’)、特定的变换小命令(例如,transform/xslt小命令1950)以及输出小命令1910。由此,第七序列1907示出了令标记小命令1930在转换小命令和变换小命令的上游。
图20示出了由格式化小命令执行的示例性处理2000。格式化过程在由语法分析器和管道处理器以上述方式对格式化小命令进行语法分析和调用之后,在框2001开始。处理在框2002继续。
在框2002,接收管道对象,作为格式化小命令的输入。处理在框2004继续。
在框2004,启动查询以识别管道化对象的类型。这一查询由上文结合图18描述的扩展类型管理器执行。一旦扩展类型管理器识别了对象的类型,则处理在框2006继续。
在框2006,在显示信息中查找识别的类型。显示信息的示例性格式在图21中示出,并在下文描述。处理在框2008继续。
在判别框2008,确定是否在显示信息中指定了识别的类型。如果显示信息中没有识别类型的条目,则处理完成。否则,处理在框2010继续。
在框2010,从显示信息获取与识别的类型相关联的格式化信息。处理在框2012继续。
在框2012,在管道上发出信息。一旦信息被发出,处理完成。
现在更详细地描述可被发出的示例性信息。该信息可包括格式化信息、页眉/页脚信息以及组结束/开始信号对象。格式化信息可包括形状、标签、编号/项目符号、列宽度、字符编码类型、内容字体属性、页长度、“按……分组”属性名等等。这些的每一个可具有与其相关联的附加指定。例如,形状可指定形状是表格、列表还是其它。标签可指定是使用列标题、列表标签还是其它。字符编码可指定ASCII、UTF-8、Unicode等等。内容字体属性可指定应用到显示的属性值的字体。如果内容字体属性未被指定,则可使用默认字体属性(例如,Courier New,10磅)。
页眉/页脚信息可包括页眉/页脚范围、字体属性、标题、小标题、日期、时间、页编号、分隔符等等。例如,范围可指定文档、页、组等。对页眉或页脚可指定另外的属性。例如,对于组和文档页脚,另外的属性可包括计算总和/总计的属性或列、对象计数、用于总计和计数的标签串等等。
组结束/开始信号对象在格式化小命令检测到“按……分组”属性改变之后被发出。当发生这一情况时,格式化小命令将管道对象流作为先前已排序来处理,并且不对它们重新排序。组结束/开始信号对象可以散布在管道对象中。可对嵌套的排序指定多个“按……分组”属性。格式化小命令也可发出包括最终的总和和总计的格式化结束对象。
简要地转向图21,示例性显示信息2100是结构化的格式,并包含与定义的每一对象相关联的信息(例如,格式化信息、页眉/页脚信息、“按……分组”属性或方法)。例如,显示信息2100可以是基于XML的。上述属性的每一个然后可在显示信息内指定。显示信息2100内的信息可以由输入的对象类型的所有者来填充。操作环境提供了允许所有者通过创建、删除和修改条目来更新显示信息的某些API和小命令。
图22是列出由于某些格式化小命令(例如,formate/table(格式化/表格)、format/list(格式化/列表)以及format/wide(格式化/宽))、标记小命令(例如,add/markup(添加/标记))、转换小命令(例如,convert/text(转换/文本)、convert/sv(转换/sv)、convert/csv(转换/csv)、convert/ADO(转换/AD0)、convert/XML(转换/XML))、变换小命令(例如,transform/XSLT(变换/XSLT))以及输出小命令(例如,out/console(输出/控制台)、out/file(输出/文件))的示例性句法2201-2213。图23示出了由使用输出处理小命令(例如,格式化小命令、转换小命令和标记小命令)的各种管道序列的out/concole小命令呈现的结果。
由于本管理工具框架允许任务从任意主机启动(例如,用户界面、命令行、编程方式),系统管理员和产品开发者可共享使两类用户更有效和更高效的代码和经验。另外,系统管理员将只需要学习一组概念、命令和寻找故障技术。同样地,产品开发者也只需要创建一个提供者小命令来利用所有管理工具。
这样,如所述的,由于本管理工具框架简化了管理对象的访问和控制并提供了透明的远程访问,本管理工具框架降低了开发管理工具所需的技术水平。另外,这一框架使开发者能够看到由帮助开发者学习框架的GUI交互过程所运行的脚本并创建他们自己的自动化脚本。另外,由于已在由框架提供的功能上进行了测试,将产品级测试减少到只测试启用由框架提供的函数的GUI路径。另一个好处是管理GUI可通过小命令公开其内部工作方式,小命令为开发者和测试者提供对GUI内部状态和控制的方便访问用于调试/诊断/自动化测试。
尽管上面描述了特定实现和实施例的细节,但这样的细节旨在满足法定公开义务,而不是限制以下权利要求书的范围。因而,由权利要求书定义的本发明不限于上述具体的特征。相反,以本发明任何形式或修改主张的本发明都落入所附权利要求书的适当范围,适当地按照等价原则解释。

Claims (28)

1.一种自动化管理系统,包括:
一语法分析器组件,配置来分析输入并根据所述输入确定至少一个小命令;以及
一引擎组件,配置成用来自输入源的信息填充关联于所述小命令的参数,并执行所述小命令以生成能够进行精确语法分析的流,其中,所述输入源包括从另一小命令发出的能够进行精确语法分析的流。
2.如权利要求1所述的自动化管理系统,其特征在于,还包括一主机组件,配置来为所述输入提供至少一条命令。
3.如权利要求2所述的自动化管理系统,其特征在于,所述主机组件直接向所述语法分析器组件提供所述输入。
4.如权利要求2所述的自动化管理系统,其特征在于,所述主机组件使用主机小命令来提供所述输入,所述主机小命令被处理为在所述引擎组件内的小命令之一。
5.如权利要求1所述的自动化管理系统,其特征在于,所述小命令包括一基础小命令,提供对多种数据类型操作的公共实用程序。
6.如权利要求1所述的自动化管理系统,其特征在于,所述小命令包括一主机小命令,提供一系统实用程序。
7.如权利要求1所述的自动化管理系统,其特征在于,所述关联于所述小命令的参数包括在所述小命令内的参数的参数声明。
8.如权利要求1所述的自动化管理系统,其特征在于,所述关联于所述小命令的参数包括对定义所述参数的外部源的引用。
9.如权利要求1所述的自动化管理系统,其特征在于,所述小命令包括一提供者小命令,提供关联于一应用程序的功能。
10.一种在包含一或多台计算机的系统中执行自动化管理的方法,所述方法包括:
接收输入;
将一小命令关联于所述输入,所述小命令确定至少一个预期输入参数;
对每个指定了从所述输入获取数据的预期输入参数,用来自所述输入的数据填充所述预期输入参数;以及
对每个指定了从对所述小命令的输入流获取信息的预期输入参数,用所述信息填充预期输入参数,执行所述小命令来基于所述信息和数据生成一对象流,并发出所述对象流,其中,所述输入流包括由另一小命令发出的对象流。
11.如权利要求10所述的方法,其特征在于,所述对象流包括.NET对象、XML文档或现用目录对象。
12.如权利要求10所述的方法,其特征在于,所述小命令和所述另一小命令在同一进程中运行。
13.如权利要求10所述的方法,其特征在于,所述小命令在本地进程中运行而所述另一小命令在远程进程中运行。
14.如权利要求10所述的方法,其特征在于,所述输入包括串。
15.如权利要求10所述的方法,其特征在于,所述输入包括脚本。
16.一管理系统,包括:
一用于接收输入的装置;
一用于分析所述输入为至少一个小命令的装置,所述小命令提供用于描述关联于输入源的至少一个预期输入参数的工具;
一用于填充每个预期输入参数的工具;以及
一用于以一种使得所述输入源包括由另一小命令生成的输出流的方式处理所述小命令的装置。
17.如权利要求16所述的系统,其特征在于,所述一个小命令和所述另一小命令在同一进程中执行。
18.如权利要求16所述的系统,其特征在于,所述输出流包括.NET对象。
19.如权利要求16所述的系统,其特征在于,处理所述小命令包括用由所述输出流获取的信息填充至少一个预期输入参数。
20.如权利要求16所述的系统,其特征在于,所述至少一个小命令包括一个由所述管理系统提供的基础小命令。
21.如权利要求16所述的系统,其特征在于,所述至少一个小命令包括一个由第三方开发者提供的第三方小命令。
22.如权利要求16所述的系统,其特征在于,还提供一访问远程计算设备上的所述小命令的装置。
23.一自动化管理方法,包含:
接受用户输入;
将用户输入转换为由管理工具系统认识的输入格式;以及
将所述输入格式转送至所述管理工具系统,所述管理工具系统配置来:
分析所述输入格式;
根据所述输入实例化一小命令,所述小命令指定一预期输入参数;以及
从输入源填充所述预期输入参数。
24.如权利要求23所述的方法,其特征在于,所述输入源包括所述输入格式。
25.如权利要求23所述的方法,其特征在于,所述输入源包括从另一小命令发出的输入流。
26.如权利要求23所述的方法,其特征在于,还包括提供一主机小命令,所述主机小命令提供主机应用程序与所述管理工具系统之间的接口。
27.如权利要求23所述的方法,其特征在于,所述用户输入包括声音输入。
28.如权利要求23所述的方法,其特征在于,所述用户输入包括在命令行上输入的命令串。
CNB2004800012963A 2003-10-24 2004-07-23 用于自动化管理任务的系统和方法 Expired - Fee Related CN100547552C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,785 US7155706B2 (en) 2003-10-24 2003-10-24 Administrative tool environment
US10/693,785 2003-10-24

Publications (2)

Publication Number Publication Date
CN101091160A CN101091160A (zh) 2007-12-19
CN100547552C true CN100547552C (zh) 2009-10-07

Family

ID=34522475

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800012963A Expired - Fee Related CN100547552C (zh) 2003-10-24 2004-07-23 用于自动化管理任务的系统和方法

Country Status (6)

Country Link
US (3) US7155706B2 (zh)
EP (1) EP1631887A4 (zh)
JP (1) JP2007519073A (zh)
KR (1) KR101120853B1 (zh)
CN (1) CN100547552C (zh)
WO (1) WO2005045568A2 (zh)

Families Citing this family (191)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645137B2 (en) 2000-03-16 2014-02-04 Apple Inc. Fast, language-independent method for user authentication by voice
ITFI20010199A1 (it) 2001-10-22 2003-04-22 Riccardo Vieri Sistema e metodo per trasformare in voce comunicazioni testuali ed inviarle con una connessione internet a qualsiasi apparato telefonico
US20060179431A1 (en) * 2003-03-19 2006-08-10 Unisys Corporation Rules-based deployment of computing components
US7421658B1 (en) * 2003-07-30 2008-09-02 Oracle International Corporation Method and system for providing a graphical user interface for a script session
US7640540B2 (en) * 2003-10-24 2009-12-29 Microsoft Corporation Mechanism for providing extended functionality to command line instructions
US20050193361A1 (en) * 2004-02-27 2005-09-01 Vitanov Kamen B. System and method for presentation of wireless application data using repetitive UI layouts
US20050193380A1 (en) * 2004-02-27 2005-09-01 Vitanov Kamen B. System and method for executing wireless applications using common UI components from a UI repository
US7779387B2 (en) * 2004-04-15 2010-08-17 Microsoft Corporation Offline source code control
US7503038B2 (en) * 2004-08-27 2009-03-10 Microsoft Corporation System and method for seamlessly comparing objects
US8407347B2 (en) * 2004-11-19 2013-03-26 Xiao Qian Zhang Method of operating multiple input and output devices through a single computer
US20060167868A1 (en) * 2005-01-27 2006-07-27 Weijia Zhang Universal and extensible packaging process for computer system software integration and deployment
US7567968B2 (en) * 2005-01-31 2009-07-28 Microsoft Corporation Integration of a non-relational query language with a relational data store
US20060190579A1 (en) * 2005-02-23 2006-08-24 Alcatel Assisted command script template creation
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US7567257B2 (en) 2005-12-16 2009-07-28 Microsoft Corporation Partition-based undo of partitioned object graph
US7818726B2 (en) 2006-01-25 2010-10-19 Microsoft Corporation Script-based object adaptation
EP1818813A1 (en) * 2006-02-02 2007-08-15 Research In Motion Limited System and method and apparatus for using UML tools for defining web service bound component applications
US8336037B1 (en) * 2006-05-17 2012-12-18 Ross Richard A JNI-minimizing data structures for XML parsing
US7581190B2 (en) * 2006-07-19 2009-08-25 Microsoft Corporation Constructing user interfaces on top of cmdlets
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US7720868B2 (en) * 2006-11-13 2010-05-18 Microsoft Corporation Providing assistance with the creation of an XPath expression
KR100882348B1 (ko) 2006-12-07 2009-02-13 한국전자통신연구원 보안 운영 체제를 위한 보안 정책 설정 방법 및 장치
US7836137B2 (en) * 2007-03-23 2010-11-16 Microsoft Corporation E-mail tool management shell command set
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8301668B1 (en) * 2007-06-27 2012-10-30 Actuate Corporation Expression builder
WO2009017158A1 (ja) * 2007-08-01 2009-02-05 Nec Corporation 変換プログラム探索システムおよび変換プログラム探索方法
US9053089B2 (en) 2007-10-02 2015-06-09 Apple Inc. Part-of-speech tagging using latent analogy
US8694886B2 (en) * 2008-01-02 2014-04-08 International Business Machines Corporation Providing dynamic context assist for a command line interface
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US8161455B2 (en) * 2008-01-31 2012-04-17 International Business Machines Corporation Concurrent execution of multiple primitive commands in command line interface
US8065143B2 (en) 2008-02-22 2011-11-22 Apple Inc. Providing text input using speech data and non-speech data
US8245186B2 (en) * 2008-04-03 2012-08-14 Microsoft Corporation Techniques for offering and applying code modifications
US20090254881A1 (en) * 2008-04-04 2009-10-08 Microsoft Corporation Code generation techniques for administrative tasks
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US8464150B2 (en) 2008-06-07 2013-06-11 Apple Inc. Automatic language identification for dynamic text processing
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
US8768702B2 (en) 2008-09-05 2014-07-01 Apple Inc. Multi-tiered voice feedback in an electronic device
US8898568B2 (en) 2008-09-09 2014-11-25 Apple Inc. Audio user interface
US8712776B2 (en) 2008-09-29 2014-04-29 Apple Inc. Systems and methods for selective text to speech synthesis
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
WO2010067118A1 (en) 2008-12-11 2010-06-17 Novauris Technologies Limited Speech recognition involving a mobile device
US8862252B2 (en) 2009-01-30 2014-10-14 Apple Inc. Audio user interface for displayless electronic device
US8380507B2 (en) 2009-03-09 2013-02-19 Apple Inc. Systems and methods for determining the language to use for speech generated by a text to speech engine
US8934866B2 (en) * 2009-04-20 2015-01-13 Aetherpal Inc. System to assist a mobile device subscriber to perform self-diagnosis of the mobile device
US20120311585A1 (en) 2011-06-03 2012-12-06 Apple Inc. Organizing task items that represent tasks to perform
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10540976B2 (en) 2009-06-05 2020-01-21 Apple Inc. Contextual voice commands
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US9431006B2 (en) 2009-07-02 2016-08-30 Apple Inc. Methods and apparatuses for automatic speech recognition
US8682649B2 (en) 2009-11-12 2014-03-25 Apple Inc. Sentiment prediction from textual data
US20110145786A1 (en) * 2009-12-15 2011-06-16 Microsoft Corporation Remote commands in a shell environment
US8311838B2 (en) 2010-01-13 2012-11-13 Apple Inc. Devices and methods for identifying a prompt corresponding to a voice input in a sequence of prompts
US8381107B2 (en) 2010-01-13 2013-02-19 Apple Inc. Adaptive audio feedback system and method
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US9244706B2 (en) 2010-05-27 2016-01-26 Microsoft Technology Licensing, Llc Command line shell command generation based on schema
US8745581B2 (en) 2010-06-21 2014-06-03 Touch Technologies, Inc. Method and system for selectively copying portions of a document contents in a computing system (smart copy and paste
US8713021B2 (en) 2010-07-07 2014-04-29 Apple Inc. Unsupervised document clustering using latent semantic density analysis
US8719006B2 (en) 2010-08-27 2014-05-06 Apple Inc. Combined statistical and rule-based part-of-speech tagging for text-to-speech synthesis
US8719014B2 (en) 2010-09-27 2014-05-06 Apple Inc. Electronic device with text error correction based on voice recognition data
US10515147B2 (en) 2010-12-22 2019-12-24 Apple Inc. Using statistical language models for contextual lookup
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US9244707B2 (en) 2011-01-25 2016-01-26 Microsoft Technology Licensing, Llc Transforming user interface actions to script commands
US9141403B2 (en) 2011-02-15 2015-09-22 Microsoft Technology Licensing, Llc Data-driven schema for describing and executing management tasks in a graphical user interface
US8781836B2 (en) 2011-02-22 2014-07-15 Apple Inc. Hearing assistance system for providing consistent human speech
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US20120310642A1 (en) 2011-06-03 2012-12-06 Apple Inc. Automatically creating a mapping between text data and audio data
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US8812294B2 (en) 2011-06-21 2014-08-19 Apple Inc. Translating phrases from one language into another using an order-based set of declarative rules
US8706472B2 (en) 2011-08-11 2014-04-22 Apple Inc. Method for disambiguating multiple readings in language conversion
US8994660B2 (en) 2011-08-29 2015-03-31 Apple Inc. Text correction processing
US8762156B2 (en) 2011-09-28 2014-06-24 Apple Inc. Speech recognition repair using contextual information
US9069897B2 (en) * 2011-11-23 2015-06-30 Microsoft Technology Licensing, Llc Capturing telemetry data by dynamic language engine
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US8775442B2 (en) 2012-05-15 2014-07-08 Apple Inc. Semantic search using a single-source semantic model
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
WO2013185109A2 (en) 2012-06-08 2013-12-12 Apple Inc. Systems and methods for recognizing textual identifiers within a plurality of words
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US8881126B2 (en) * 2012-07-31 2014-11-04 Oracle International Corporation Systems and methods for testing a compiler through compile-time decision feedback
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US9547647B2 (en) 2012-09-19 2017-01-17 Apple Inc. Voice-based media searching
US8935167B2 (en) 2012-09-25 2015-01-13 Apple Inc. Exemplar-based latent perceptual modeling for automatic speech recognition
KR102516577B1 (ko) 2013-02-07 2023-04-03 애플 인크. 디지털 어시스턴트를 위한 음성 트리거
US10642574B2 (en) 2013-03-14 2020-05-05 Apple Inc. Device, method, and graphical user interface for outputting captions
US10572476B2 (en) 2013-03-14 2020-02-25 Apple Inc. Refining a search based on schedule items
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
US9733821B2 (en) 2013-03-14 2017-08-15 Apple Inc. Voice control to diagnose inadvertent activation of accessibility features
US9977779B2 (en) 2013-03-14 2018-05-22 Apple Inc. Automatic supplementation of word correction dictionaries
CN112230878A (zh) 2013-03-15 2021-01-15 苹果公司 对中断进行上下文相关处理
WO2014144949A2 (en) 2013-03-15 2014-09-18 Apple Inc. Training an at least partial voice command system
US11151899B2 (en) 2013-03-15 2021-10-19 Apple Inc. User training by intelligent digital assistant
WO2014144579A1 (en) 2013-03-15 2014-09-18 Apple Inc. System and method for updating an adaptive speech recognition model
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
WO2014197336A1 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
EP3008641A1 (en) 2013-06-09 2016-04-20 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
CN105265005B (zh) 2013-06-13 2019-09-17 苹果公司 用于由语音命令发起的紧急呼叫的系统和方法
GB201312280D0 (en) * 2013-07-09 2013-08-21 Maxymiser Ltd Native app
US10191887B2 (en) 2013-07-18 2019-01-29 Microsoft Technology Licensing, Llc Context affinity in a remote scripting environment
US8874755B1 (en) * 2013-07-31 2014-10-28 Splunk, Inc. Provisioning of cloud networks with services
WO2015020942A1 (en) 2013-08-06 2015-02-12 Apple Inc. Auto-activating smart responses based on activities from remote devices
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
EP3149728B1 (en) 2014-05-30 2019-01-16 Apple Inc. Multi-command single utterance input method
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10789041B2 (en) 2014-09-12 2020-09-29 Apple Inc. Dynamic thresholds for always listening speech trigger
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
DK179309B1 (en) 2016-06-09 2018-04-23 Apple Inc Intelligent automated assistant in a home environment
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
DK179343B1 (en) 2016-06-11 2018-05-14 Apple Inc Intelligent task discovery
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK179049B1 (en) 2016-06-11 2017-09-18 Apple Inc Data driven natural language event detection and classification
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. USER INTERFACE FOR CORRECTING RECOGNITION ERRORS
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770429A1 (en) 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
DK179560B1 (en) 2017-05-16 2019-02-18 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
JP7003749B2 (ja) * 2018-03-09 2022-01-21 富士通株式会社 生成プログラム、生成装置、および、生成方法
US10691433B2 (en) * 2018-08-31 2020-06-23 Databricks Inc. Split front end for flexible back end cluster processing
CN111291299B (zh) * 2020-01-22 2023-08-15 北京飞漫软件技术有限公司 一种直接获取本地命令执行结果的方法及本地服务器

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404528A (en) * 1993-01-19 1995-04-04 Canon Information Systems, Inc. Scripting system
US5522073A (en) * 1993-11-22 1996-05-28 Hewlett-Packard Company Method and apparatus for automating and controlling execution of software tools and tool sets via when/then relationships
JPH09244921A (ja) * 1996-03-08 1997-09-19 Fujitsu Ltd ソフトウエア試験の自動化システム
US5892905A (en) * 1996-12-23 1999-04-06 International Business Machines Corporation Computer apparatus and method for providing a common user interface for software applications accessed via the world-wide web
US6078743A (en) * 1997-11-24 2000-06-20 International Business Machines Corporation Generic IDE interface support for scripting
US6292936B1 (en) * 1998-11-12 2001-09-18 International Business Machines Corporation Enabling multiple runtime processors in an interpreter-based embedded scripting system
US6651241B1 (en) * 1999-09-29 2003-11-18 Lucent Technologies Inc. Scriptor and interpreter
JP2002024039A (ja) * 2000-07-12 2002-01-25 Mitsubishi Electric Corp ソフトウェア管理システム
US7636945B2 (en) * 2000-07-14 2009-12-22 Computer Associates Think, Inc. Detection of polymorphic script language viruses by data driven lexical analysis
US6823504B1 (en) * 2000-11-15 2004-11-23 Sun Microsystems, Inc. Method and apparatus for interfacing a javascript interpreter with library of host objects implemented in java
US20020078382A1 (en) * 2000-11-29 2002-06-20 Ali Sheikh Scalable system for monitoring network system and components and methodology therefore
US6941560B1 (en) * 2000-12-19 2005-09-06 Novell, Inc. XML-based integrated services event system
US7284274B1 (en) * 2001-01-18 2007-10-16 Cigital, Inc. System and method for identifying and eliminating vulnerabilities in computer software applications
GB0119488D0 (en) * 2001-08-10 2001-10-03 Cellectivity Ltd E-commerce method for mobile telephones
US6785685B2 (en) * 2001-08-22 2004-08-31 International Business Machines Corporation Approach for transforming XML document to and from data objects in an object oriented framework for content management applications
US6880125B2 (en) * 2002-02-21 2005-04-12 Bea Systems, Inc. System and method for XML parsing
US7143343B2 (en) * 2002-04-11 2006-11-28 International Business Machines Corporation Dynamic creation of an application's XML document type definition (DTD)
US7178149B2 (en) * 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
CA2406866A1 (en) * 2002-10-04 2004-04-04 Sun Microsystems, Inc. System and method for migrating software
US20050108518A1 (en) * 2003-06-10 2005-05-19 Pandya Ashish A. Runtime adaptable security processor
US20050071369A1 (en) * 2003-09-29 2005-03-31 Peter Lang Object tailoring
US20050182958A1 (en) * 2004-02-17 2005-08-18 Duc Pham Secure, real-time application execution control system and methods
US7555708B2 (en) * 2004-09-17 2009-06-30 Microsoft Corporation Mechanism for converting text output into objects

Also Published As

Publication number Publication date
EP1631887A4 (en) 2008-09-10
CN101091160A (zh) 2007-12-19
WO2005045568A3 (en) 2007-04-12
US20050091258A1 (en) 2005-04-28
US8230405B2 (en) 2012-07-24
JP2007519073A (ja) 2007-07-12
EP1631887A2 (en) 2006-03-08
US20050091201A1 (en) 2005-04-28
US20070135949A1 (en) 2007-06-14
WO2005045568A2 (en) 2005-05-19
KR20060130478A (ko) 2006-12-19
US7243344B2 (en) 2007-07-10
KR101120853B1 (ko) 2012-06-12
US7155706B2 (en) 2006-12-26

Similar Documents

Publication Publication Date Title
CN100547552C (zh) 用于自动化管理任务的系统和方法
CN101073057B (zh) 提供命令行操作环境的方法和系统
CN101351771B (zh) 用于获取并应用交互式环境内对构造的约束的方法和系统
CN100592256C (zh) 无缝地比较对象的系统和方法
US5758351A (en) System and method for the creation and use of surrogate information system objects
US6314434B1 (en) Structured data management system and computer-readable method for storing structured data management program
KR101130500B1 (ko) 데이터 구동 커맨드 라인 출력을 제공하는 메커니즘
KR101098603B1 (ko) 원격 경계를 가로질러 컴퓨터 판독가능한 객체들을전달하기 위한 시스템 및 방법
WO2002021269A1 (en) Software application development
AU2004279192B2 (en) Mechanism for analyzing partially unresolved input
CN102144230B (zh) 基于记录的代码结构
US20050262037A1 (en) Method and apparatus for controlling result dataset generation in a javascript environment
Delorme et al. Beginning Visual Web Developer 2005 Express: From Novice to Professional
US20050262140A1 (en) Method and apparatus for argument parameterization of complex dataset operations
Hillier The Information Bridge Framework

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150515

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150515

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091007

Termination date: 20200723