New-Object

创建 Microsoft .NET Framework 或 COM 对象的实例。

语法

New-Object -ComObject <string> [-Strict] [-Property <hashtable>] [<CommonParameters>]

New-Object [-TypeName] <string> [[-ArgumentList] <Object[]>] [-Property <hashtable>] [<CommonParameters>]

说明

New-Object cmdlet 创建 .NET Framework 或 COM 对象的实例。

可以指定 .NET Framework 类的类型,也可以指定 COM 对象的 ProgID。默认情况下,键入 .NET Framework 类的完全限定名称时,该 cmdlet 返回对该类的实例的引用。若要创建 COM 对象的实例,请使用 ComObject 参数并指定对象的 ProgID 作为它的值。

参数

-ArgumentList <Object[]>

指定传递给 .NET Framework 类的构造函数的参数列表。使用逗号 (,) 分隔列表中的元素。ArgumentList 的别名为 Args。

是否为必需?

false

位置?

2

默认值

是否接受管道输入?

false

是否接受通配符?

false

-ComObject <string>

指定 COM 对象的编程标识符 (ProgID)。

是否为必需?

true

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Property <hashtable>

设置属性值,并调用新对象的方法。

输入一个哈希表,其中的键是属性或方法的名称,值是属性值或方法参数。New-Object 创建对象并设置每个属性值,并按方法在哈希表中的出现顺序调用每个方法。

如果新对象是从 PSObject 类派生的,并且您指定该对象中不存在的一个属性,则 New-Object 将该指定属性作为 NoteProperty 添加到该对象中。如果该对象不是 PSObject,则命令将生成一个非终止错误。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Strict

指定如果试图创建的 COM 对象使用互操作程序集则应当引发的错误。这使您能够将实际 COM 对象与具有 COM 可调用包装的 .NET Framework 对象区分开来。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-TypeName <string>

指定 NET Framework 类的完全限定名称。不能同时指定 TypeName 参数和 ComObject 参数。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

不能通过管道将输入传递给此 cmdlet。

输出

Object

New-Object 返回创建的对象。

说明

New-Object 提供 VBScript CreateObject 函数的最常用功能。像 VBScript 中 Set objShell = CreateObject("Shell.Application") 这样的语句可以转换成 Windows PowerShell 中的 $objShell = new-object -comobject "Shell.Application"。

New-Object 通过使您更容易从命令行和在脚本内处理 .NET Framework 对象,扩展了在 Windows 脚本宿主环境中可用的功能。

示例 1

C:\PS>new-object -typename System.Version -argumentlist "1.2.3.4" 

Major  Minor  Build  Revision
-----  -----  -----  --------
1      2      3      4

说明
-----------
此命令使用字符串“1.2.3.4”作为构造函数来创建 System.Version 对象。





示例 2

C:\PS>$ie = new-object -comobject InternetExplorer.Application -property @{navigate2="www.microsoft.com"; visible = $true}

说明
-----------
此命令创建表示 Internet Explorer 应用程序的 COM 对象的实例。它使用 Property 参数来调用 Navigate2 方法,并将该对象的 Visible 属性设置为 $true,使应用程序可见。

此命令与下列命令等效:

$ie = new-object -comobject InternetExplorer.Application
$ie.navigate2("www.microsoft.com")
$ie.visible = $true





示例 3

C:\PS>$a=new-object -comobject Word.Application -strict -property @{visible=$true}

New-Object : The object written to the pipeline is an instance of the type
"Microsoft.Office.Interop.Word.ApplicationClass" from the component's prima
ry interop assembly. If this type exposes different members than the IDispa
tch members, scripts written to work with this object might not work if the
 primary interop assembly is not installed.
At line:1 char:14
+ $a=New-Object  <<<< -COM Word.Application -Strict; $a.visible=$true

说明
-----------
此命令演示:如果所创建的 COM 对象使用互操作程序集,则指定 Strict 参数将使 New-Object cmdlet 生成非终止错误。





示例 4

C:\PS>$objshell = new-object -comobject "Shell.Application"

C:\PS> $objshell | get-member

C:\PS> $objshell.ToggleDesktop()

说明
-----------
该命令使用 ComObject 参数创建 ProgID 为“Shell.Application”的 COM 对象。它将生成的对象存储在 $objShell 变量中。

第二个命令通过管道将 $objShell 变量传递到 Get-Member cmdlet,该 cmdlet 显示 COM 对象的属性和方法。

第三个命令调用该对象的 ToggleDesktop 方法,将桌面上打开的窗口最小化。





另请参阅

概念

Compare-Object
Select-Object
Sort-Object
ForEach-Object
Group-Object
Measure-Object
Tee-Object
Where-Object