COM is a Windows-specific standardized API that allows application to expose services for consumption by COM clients. COM client support allows access to a wide range of COM servers like Internet Explorer, Microsoft Office, or various management-related OS services, in particular WMI. The new-comObject command creates proxy client objects that make the services exposed by a COM server available for scripting.
The command has the following syntax:
new-comObject progid [-locale lcid]
Specifies a string that identifies the COM object to instantiate. The string can either be the human readable program ID (PROGID) or the internal CLSID. When specifying a CLSID, it must be contained in curly brackets.
Specifies an integer that defines the desired locale for COM servers supporting multiple locales.
Default: 0
The new-comObject returns an object that represents a proxy between the AutoShell and the COM server. The object mirrors the methods and properties exposed by the COM server. For details about the public interface of a COM server, refer to the programmer documentation of that particular server. The exposed methods and properties are accessed using regular JavaScript syntax on the returned AutoObject.
Examples
Open a web page in Internet Explorer and query its URL:
o = new-comObject InternetExplorer.Application // Make Internet Explorer visible o.Visible = true; o.navigate("www.ca.com"); // Get active document (another COM object) doc = o.document ? doc.Url // for example http://www.ca.com/us
Get the computer name using the scripting object:
o = new-comObject WScript.Network ? o.ComputerName
Retrieve some information about the operating system and logical drives using WMI:
loc=new-comObject WbemScripting.SWbemLocator // Security is actually not required for localhost loc.Security_.AuthenticationLevel=0; // wbemAuthenticationLevelDefault loc.Security_.ImpersonationLevel=3; // wbemImpersonationLevelImpersonate wmisrv=loc.connectServer("localhost", "root\cimv2"); items = wmisrv.ExecQuery("Select * from Win32_OperatingSystem"); // Returned collection has only one item, // since there is just one OS running 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; // Now for the disks items = wmisrv.ExecQuery("Select * from Win32_LogicalDisk"); // Iterate over returned disks 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; }
Copyright © 2013 CA. All rights reserved. |
|