New-Object
Создает экземпляр объекта Microsoft .NET Framework или COM.
Синтаксис
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
Описание
Командлет New-Object
создает экземпляр платформа .NET Framework или COM-объекта.
Можно указать тип класса .NET Framework или идентификатор ProgID объекта COM. По умолчанию вводится полное имя класса .NET Framework, и командлет возвращает ссылку на экземпляр этого класса. Чтобы создать экземпляр COM-объекта, используйте параметр ComObject и укажите ProgID объекта в качестве значения.
Примеры
Пример 1. Create объекта System.Version
В этом примере создается объект System.Version с помощью строки "1.2.3.4" в качестве конструктора.
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
Пример 2. Create COM-объекта internet Обозреватель
В этом примере создаются два экземпляра COM-объекта, представляющего приложение internet Обозреватель. Первый экземпляр использует хэш-таблицу параметров Property , чтобы вызвать метод Navigate2 и задать свойству Visible объекта значение , $True
чтобы сделать приложение видимым.
Второй экземпляр получает те же результаты с помощью отдельных команд.
$IE1 = New-Object -COMObject InternetExplorer.Application -Property @{Navigate2="www.microsoft.com"; Visible = $True}
# The following command gets the same results as the example above.
$IE2 = New-Object -COMObject InternetExplorer.Application`
$IE2.Navigate2("www.microsoft.com")`
$IE2.Visible = $True`
Пример 3. Использование параметра Strict для создания неустранимой ошибки
В этом примере показано, что добавление параметра Strict приводит к тому New-Object
, что командлет создает неустранимую ошибку, когда COM-объект использует сборку взаимодействия.
$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 primary interop assembly. If
this type exposes different members than the IDispatch 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
Пример 4. Create COM-объект для управления рабочим столом Windows
В этом примере показано, как создать и использовать COM-объект для управления рабочим столом Windows.
Первая команда использует параметр ComObject командлета New-Object
для создания COM-объекта с идентификатором Shell.Application ProgID. Он сохраняет результирующий объект в переменной $ObjShell
. Вторая команда передает $ObjShell
переменную командлету Get-Member
, который отображает свойства и методы COM-объекта. Среди методов — метод ToggleDesktop . Третья команда вызывает метод ToggleDesktop объекта, чтобы свести к минимуму число открытых окон на рабочем столе.
$Objshell = New-Object -COMObject "Shell.Application"
$objshell | Get-Member
$objshell.ToggleDesktop()
TypeName: System.__ComObject#{866738b9-6cf2-4de8-8767-f794ebe74f4e}
Name MemberType Definition
---- ---------- ----------
AddToRecent Method void AddToRecent (Variant, string)
BrowseForFolder Method Folder BrowseForFolder (int, string, int, Variant)
CanStartStopService Method Variant CanStartStopService (string)
CascadeWindows Method void CascadeWindows ()
ControlPanelItem Method void ControlPanelItem (string)
EjectPC Method void EjectPC ()
Explore Method void Explore (Variant)
ExplorerPolicy Method Variant ExplorerPolicy (string)
FileRun Method void FileRun ()
FindComputer Method void FindComputer ()
FindFiles Method void FindFiles ()
FindPrinter Method void FindPrinter (string, string, string)
GetSetting Method bool GetSetting (int)
GetSystemInformation Method Variant GetSystemInformation (string)
Help Method void Help ()
IsRestricted Method int IsRestricted (string, string)
IsServiceRunning Method Variant IsServiceRunning (string)
MinimizeAll Method void MinimizeAll ()
NameSpace Method Folder NameSpace (Variant)
Open Method void Open (Variant)
RefreshMenu Method void RefreshMenu ()
ServiceStart Method Variant ServiceStart (string, Variant)
ServiceStop Method Variant ServiceStop (string, Variant)
SetTime Method void SetTime ()
ShellExecute Method void ShellExecute (string, Variant, Variant, Variant, Variant)
ShowBrowserBar Method Variant ShowBrowserBar (string, Variant)
ShutdownWindows Method void ShutdownWindows ()
Suspend Method void Suspend ()
TileHorizontally Method void TileHorizontally ()
TileVertically Method void TileVertically ()
ToggleDesktop Method void ToggleDesktop ()
TrayProperties Method void TrayProperties ()
UndoMinimizeALL Method void UndoMinimizeALL ()
Windows Method IDispatch Windows ()
WindowsSecurity Method void WindowsSecurity ()
WindowSwitcher Method void WindowSwitcher ()
Application Property IDispatch Application () {get}
Parent Property IDispatch Parent () {get}
Пример 5. Передача конструктору нескольких аргументов
В этом примере показано, как создать объект с конструктором, принимаюющим несколько параметров. Параметры должны быть помещены в массив при использовании параметра ArgumentList .
$array = @('One', 'Two', 'Three')
$parameters = @{
TypeName = 'System.Collections.Generic.HashSet[string]'
ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters
PowerShell привязывает каждый элемент массива к параметру конструктора.
Примечание
В этом примере для удобочитаемости используется сплаттинг параметров. Дополнительные сведения см. в разделе about_Splatting.
Пример 6. Вызов конструктора, который принимает массив в качестве одного параметра
В этом примере показано, как создать объект с конструктором, который принимает параметр, который является массивом или коллекцией. Параметр массива должен быть помещен в оболочку внутри другого массива.
$array = @('One', 'Two', 'Three')
# This command throws an exception.
$set = New-Object -TypeName 'System.Collections.Generic.HashSet[string]' -ArgumentList $array
# This command succeeds.
$set = New-Object -TypeName 'System.Collections.Generic.HashSet[string]' -ArgumentList (,[string[]]$array)
$set
New-Object : Cannot find an overload for "HashSet`1" and the argument count: "3".
At line:1 char:8
+ $set = New-Object -TypeName 'System.Collections.Generic.HashSet[strin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
One
Two
Three
Первая попытка создать объект в этом примере завершается сбоем. PowerShell попыталась привязать три элемента $array
к параметрам конструктора, но конструктор не принимает три параметра. Перенос $array
в другой массив предотвращает попытку PowerShell привязать три члена $array
к параметрам конструктора.
Параметры
-ArgumentList
Задает массив аргументов для передачи конструктору класса платформа .NET Framework. Если конструктор принимает один параметр, который является массивом, необходимо поместить этот параметр в другой массив. Пример:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
Дополнительные сведения о поведении ArgumentList см. в разделе about_Splatting.
Псевдоним для ArgumentList — Args.
Type: | Object[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComObject
Указывает программный идентификатор (ProgID) объекта COM.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
Задает значения свойств и вызывает методы нового объекта.
Введите хэш-таблицу, в которой ключи — это имена свойств или методов, а значения — это значения свойств или аргументы методов. New-Object
создает объект и задает каждое значение свойства и вызывает каждый метод в том порядке, в котором они отображаются в хэш-таблице.
Если новый объект является производным от класса PSObject и вы указываете свойство, которое не существует в объекте, New-Object
добавляет указанное свойство в объект в виде NoteProperty. Если объект не является PSObject, команда создает неустранимую ошибку.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Strict
Указывает, что командлет создает неустранимую ошибку, когда com-объект, который вы пытаетесь создать, использует сборку взаимодействия. Эта функция отличает настоящие COM-объекты от объектов .NET Framework с вызываемыми оболочками COM.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TypeName
Указывает полное имя класса .NET Framework. Нельзя указать как параметр TypeName, так и параметр ComObject .
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
В этот командлет нельзя передать входные данные.
Выходные данные
Object
New-Object
возвращает созданный объект .
Примечания
New-Object
предоставляет наиболее часто используемые функции функции CreateObject VBScript. Оператор, подобныйSet objShell = CreateObject("Shell.Application")
VBScript, можно преобразовать$objShell = New-Object -COMObject "Shell.Application"
в в PowerShell.New-Object
расширяет функциональные возможности, доступные в среде узла сценариев Windows, упрощая работу с платформа .NET Framework объектами из командной строки и в скриптах.