Создает экземпляр объекта Microsoft .NET Framework или COM object.

Синтаксис

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

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

Описание

Командлет New-Object создает экземпляр объекта .NET Framework или COM-объекта.

Можно указать или тип класса .NET Framework, или программный идентификатор (ProgID) COM-объекта. По умолчанию вводится полное имя класса .NET Framework; а командлет возвращает ссылку на экземпляр этого класса. Чтобы создать экземпляр COM-объекта, укажите параметр ComObject и программный идентификатор объекта в качестве значения этого параметра.

Параметры

-ArgumentList <Object[]>

Задает список аргументов, которые передаются конструктору класса .NET Framework. Элементы списка отделяются друг от друга с помощью запятых (,). Псевдоним ArgumentList — Args.

Обязательно?

false

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-ComObject <string>

Задает программный идентификатор (ProgID) COM-объекта.

Обязательно?

true

Позиция?

named

Значение по умолчанию

нет

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Property <hashtable>

Задает значения свойств и вызывает методы нового объекта.

Введите хэш-таблицу, ключами которой являются имена свойств или методов, а значениями — значения свойств или аргументы методов. Командлет New-Object создает объект и задает значения всех свойств и вызывает все методы в том порядке, в котором они заданы в хэш-таблице.

Если новый объект унаследован от класса PSObject и задается свойство, отсутствующее в объекте, командлет New-Object добавляет указанное свойство к объекту в виде NoteProperty. Если объект не является объектом PSObject, команда создает непрерывающую ошибку.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Strict

Устанавливает, что если создаваемый COM-объект использует сборку взаимодействия, должна возникать ошибка. Это позволяет отличать реальные COM-объекты от объектов .NET Framework с оболочками, вызываемыми из COM.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-TypeName <string>

Задает полное имя класса .NET Framework. Невозможно одновременно указать параметр TypeName и параметр ComObject.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

Входные данные

Нет

Передать входные данные этому командлету по конвейеру невозможно.

Выходные данные

Object

Командлет New-Object возвращает создаваемый объект.

Примечания

В командлете New-Object реализованы наиболее востребованные возможности функции CreateObject языка VBScript. Например, команда Set objShell = CreateObject("Shell.Application") на VBScript в Windows PowerShell может быть записана как $objShell = new-object -comobject "Shell.Application".

Командлет New-Object расширяет функциональность среды сервера скриптов Windows, позволяя легко обращаться к объектам .NET Framework из командной строки и использовать их в скриптах.

Пример 1

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

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

Описание
-----------
Эта команда создает объект System.Version, используя в качестве конструктора строку "1.2.3.4".






Пример 2

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

Описание
-----------
Эта команда создает экземпляр COM-объекта, представляющего приложение Internet Explorer. Она использует параметр Property для вызова метода Navigate2 и задания значения $true для свойства Visible объекта, чтобы приложение стало видимым для пользователя.

Эта команда эквивалентна следующей команде:

$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

Описание
-----------
Эта команда демонстрирует, что при выполнении командлета New-Object с параметром Strict возникает непрерывающая ошибка, когда созданный COM-объект обращается к сборке взаимодействия.






Пример 4

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

C:\PS> $objshell | get-member

C:\PS> $objshell.ToggleDesktop()

Описание
-----------
Эта команда с помощью параметра ComObject создает COM-объект с программным идентификатором "Shell.Application". Полученный объект культуры сохраняется в переменной $objShell.

Вторая команда по конвейеру передает переменную $objShell командлету Get-Member, который отображает свойства и методы COM-объекта. 

Третья команда вызывает метод ToggleDesktop объекта, чтобы свернуть открытые окна на рабочем столе.






См. также