New-Object
Vytvoří instanci objektu Microsoft .NET Framework nebo MODELU COM.
Syntaxe
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 jako jeho hodnotu zadejte ProgID objektu.
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 tabulku volání Navigate2 metoda a nastavit Visible vlastnost objektu tak, aby $True
aby 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í parametru Strict způsobí, že rutina New-Object
vygeneruje neukončující chybu, když objekt COM používá sestavení vzájemné spolupráce.
$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 $ObjShell
. Druhý příkaz předá proměnnou $ObjShell
do rutiny Get-Member
, která zobrazí vlastnosti a metody objektu COM. Mezi metodami patří metoda ToggleDesktop. Třetí příkaz volá metodu ToggleDesktop objektu, aby se minimalizovala otevřená okna 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 naleznete 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
v jiném poli zabraňuje PowerShellu v pokusu o vytvoření vazby tří členů $array
s 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. Například:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
Alias pro ArgumentList je Args.
Typ: | Object[] |
Aliasy: | Args |
Position: | 1 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-ComObject
Určuje programový identifikátor (ProgID) objektu COM.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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 zobrazí 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.
Typ: | IDictionary |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-TypeName
Určuje plně kvalifikovaný název třídy rozhraní .NET Framework. Nelze zadat parametr TypeName i parametr ComObject.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
None
Vstup do této rutiny nelze převést.
Výstupy
Object
New-Object
vrátí vytvořený objekt.
Poznámky
-
New-Object
poskytuje nejčastěji používané funkce funkce VBScript CreateObject. Příkaz jakoSet objShell = CreateObject("Shell.Application")
v jazyce VBScript je možné přeložit na$objShell = New-Object -COMObject "Shell.Application"
v PowerShellu. -
New-Object
rozšiřuje funkce 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ů.