上一主题: mv、ren 命令-移动文件和目录 (Funclet)下一主题: new-SSHSession 命令-创建一个新的安全 SSH 会话 (Funclet)


new-comObject 命令-实例化 COM 对象 (Funclet)

COM 是一个 Windows 特定的标准化 API,允许应用程序显示供 COM 客户端使用的服务。 COM 客户端支持允许访问各种 COM 服务器,如 Internet Explorer、Microsoft Office 或与管理相关的各种操作系统服务,尤其是 WMI。 new-comObject 命令可创建代理客户端对象,这些对象使 COM 服务器显示的服务可用于编写脚本。

命令的语法如下:

new-comObject progid [-locale lcid]
progid

指定一个用于标识要实例化的 COM 对象的字符串。 该字符串可以是用户可读的程序 ID (PROGID),也可以是内部 CLSID。 指定 CLSID 时,必须将其置于大括号内。

lcid

指定一个用于定义 COM 服务器(支持多个区域设置)所需的区域设置的整数。

默认:0

返回值

new-comObject 返回一个表示 AutoShell 和 COM 服务器之间代理的对象。 该对象对 COM 服务器显示的方法和属性进行镜像。 有关某个 COM 服务器的公共接口的详细信息,请参阅该服务器的程序员文档。 使用返回的 AutoObject 的正则 JavaScript 语法访问显示的方法和属性。

示例

使用 Internet Explorer 打开一个网页并查询其 URL:

o = new-comObject InternetExplorer.Application
// 使 Internet Explorer 可见
o.Visible = true;
o.navigate("www.ca.com");
// 获取活动文档(另一个 COM 对象)
doc = o.document
? doc.Url     // 例如 http://www.ca.com/us

使用脚本化对象获取计算机名称:

o = new-comObject WScript.Network
? o.ComputerName

使用 WMI 检索有关操作系统和逻辑驱动器的信息:

loc=new-comObject WbemScripting.SWbemLocator
// 对于 localhost,实际上并不需要安全性
loc.Security_.AuthenticationLevel=0; // wbemAuthenticationLevelDefault
loc.Security_.ImpersonationLevel=3; // wbemImpersonationLevelImpersonate
wmisrv=loc.connectServer("localhost", "root\cimv2");
items = wmisrv.ExecQuery("Select * from Win32_OperatingSystem");
// 返回的集合只包含一项,
// 因为只有一个运行的 OS
os = items[0];
? "OS Type:", os.Caption;
? "Service Pack:", os.CSDVersion;
? "Computer name:", os.CSName;
? "FreePhysicalMemory:", os.FreePhysicalMemory;
? "RegisteredUser:", os.RegisteredUser;
? "TotalVisibleMemorySize:", os.TotalVisibleMemorySize;
? "Version:", os.Version;
? "WindowsDirectory:", os.WindowsDirectory;
// 现在对于磁盘
items = wmisrv.ExecQuery("Select * from Win32_LogicalDisk");
// 针对返回的磁盘迭代
for(i in items)
{
    disk = items[i];
    ? "Description:", disk.Description;
    ? "DeviceID:", disk.DeviceID;
    ? "FileSystem:", disk.FileSystem;
    ? "FreeSpace:", disk.FreeSpace;
    ? "Name:", disk.Name;
    ? "Size:", disk.Size;
}