New-Object

Vytvoří instanci objektu Microsoft .NET Framework nebo MODELU COM.

Syntax

New-Object
   [-TypeName] <String>
   [[-ArgumentList] <Object[]>]
   [-Property <IDictionary>]
   [<CommonParameters>]
New-Object
   [-ComObject] <String>
   [-Strict]
   [-Property <IDictionary>]
   [<CommonParameters>]

Description

Rutina New-Object vytvoří instanci objektu .NET Framework nebo MODELU COM.

Můžete zadat buď typ třídy rozhraní .NET Framework, nebo ProgID objektu COM. Ve výchozím nastavení zadáte plně kvalifikovaný název třídy rozhraní .NET Framework a rutina vrátí odkaz na instanci této třídy. Chcete-li vytvořit instanci objektu COM, použijte ComObject parametr a zadejte ProgID objektu jako jeho hodnotu.

Příklady

Příklad 1: Vytvoření objektu System.Version

Tento příklad vytvoří objekt System.Version pomocí řetězce "1.2.3.4" jako konstruktoru.

New-Object -TypeName System.Version -ArgumentList "1.2.3.4"

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

Příklad 2: Vytvoření objektu MODELU COM aplikace Internet Explorer

Tento příklad vytvoří dvě instance objektu COM, které představují aplikaci Internet Explorer. První instance používá vlastnost parametr hash tabulka volání Navigate2 metoda a nastavit Visible vlastnost objektu tak, aby $True byla aplikace viditelná. Druhá instance získá stejné výsledky s jednotlivými příkazy.

$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`

Příklad 3: Použití striktního parametru k vygenerování neukončující chyby

Tento příklad ukazuje, že přidání strict parametru způsobí New-Object , že rutina vygeneruje neukončující chybu, když objekt COM používá sestavení zprostředkovatele komunikace.

$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

Příklad 4: Vytvoření objektu COM pro správu plochy Windows

Tento příklad ukazuje, jak vytvořit a použít objekt COM ke správě plochy Windows.

První příkaz používá parametr New-Object ComObject rutiny k vytvoření objektu COM s Shell.Application ProgID. Uloží výsledný objekt do $ObjShell proměnné. Druhý příkaz předá proměnnou $ObjShell do Get-Member rutiny, která zobrazí vlastnosti a metody objektu COM. Mezi metodami je ToggleDesktop metoda. Třetí příkaz volá Metodu ToggleDesktop objektu pro minimalizaci otevřených oken na ploše.

$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}

Příklad 5: Předání více argumentů konstruktoru

Tento příklad ukazuje, jak vytvořit objekt s konstruktorem, který přebírá více parametrů. Parametry musí být při použití parametru ArgumentList vloženy do pole.

$array = @('One', 'Two', 'Three')
$parameters = @{
    TypeName = 'System.Collections.Generic.HashSet[string]'
    ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters

PowerShell vytvoří vazbu každého člena pole na parametr konstruktoru.

Poznámka:

V tomto příkladu se používá k čitelnosti parametru. Další informace najdete v tématu about_Splatting.

Příklad 6: Volání konstruktoru, který přebírá pole jako jeden parametr

Tento příklad ukazuje, jak vytvořit objekt s konstruktorem, který přebírá parametr, který je pole nebo kolekce. Parametr pole musí být vložen do obálky uvnitř jiného pole.

$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

První pokus o vytvoření objektu v tomto příkladu selže. PowerShell se pokusil svázat tři členy $array s parametry konstruktoru, ale konstruktor nepřebírají tři parametry. Zabalení $array do jiného pole zabrání PowerShellu v pokusu o vytvoření vazby $array tří členů na parametry konstruktoru.

Parametry

-ArgumentList

Určuje pole argumentů, které se mají předat konstruktoru třídy .NET Framework. Pokud konstruktor přebírá jeden parametr, který je pole, musíte tento parametr zabalit do jiného pole. Příklad:

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)

Další informace o chování ArgumentList naleznete v tématu about_Splatting.

Alias argumentu ArgumentList je Args.

Type:Object[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComObject

Určuje programový identifikátor (ProgID) objektu COM.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Property

Nastaví hodnoty vlastností a vyvolá metody nového objektu.

Zadejte tabulku hash, ve které jsou klíče názvy vlastností nebo metod a hodnoty jsou hodnoty nebo argumenty metody. New-Object vytvoří objekt a nastaví každou hodnotu vlastnosti a vyvolá každou metodu v pořadí, v jakém se zobrazují v tabulce hash.

Pokud je nový objekt odvozen z PSObject třídy a zadáte vlastnost, která neexistuje v objektu, New-Object přidá zadanou vlastnost do objektu jako NoteProperty. Pokud objekt není objekt PSObject, příkaz vygeneruje neukončující chybu.

Type:IDictionary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Strict

Označuje, že rutina generuje neukončující chybu, když objekt COM, který se pokusíte vytvořit, používá sestavení vzájemné spolupráce. Tato funkce rozlišuje skutečné objekty COM od objektů rozhraní .NET Framework pomocí obálky, které lze volat com.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeName

Určuje plně kvalifikovaný název třídy rozhraní .NET Framework. Nelze zadat parametr TypeName i parametr ComObject .

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

None

Do této rutiny nemůžete roušit objekty.

Výstupy

Object

Tato rutina vrátí objekt, který vytvoří.

Poznámky

  • New-Object poskytuje nejčastěji používané funkce funkce VBScript CreateObject. Příkaz jako Set objShell = CreateObject("Shell.Application") v jazyce VBScript je možné přeložit do $objShell = New-Object -COMObject "Shell.Application" PowerShellu.
  • New-Object rozšiřuje možnosti dostupné v prostředí Windows Script Host tím, že usnadňuje práci s objekty rozhraní .NET Framework z příkazového řádku a v rámci skriptů.