New-Object
Vytvoří instanci objektu Microsoft .NET Framework nebo MODELU COM.
Syntax
Net (Výchozí)
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
Com
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 části s názvem 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.
Vlastnosti parametru
| Typ: | Object[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Argumenty |
Sady parametrů
Net
| Position: | 1 |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-ComObject
Určuje programový identifikátor (ProgID) objektu COM.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
Com
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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.
Vlastnosti parametru
| Typ: | IDictionary |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
Com
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-TypeName
Určuje plně kvalifikovaný název třídy rozhraní .NET Framework. Nelze zadat parametr TypeName i parametr ComObject.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
Net
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
None
Vstup do této rutiny nelze převést.
Výstupy
Object
New-Object vrátí vytvořený objekt.
Poznámky
-
New-Objectposkytuje 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-Objectrozš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ů.