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 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.
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 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.
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
Do této rutiny nemůžete roušit objekty.
Výstupy
Tato rutina vrátí objekt, který vytvoří.
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 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ů.