New-Object
Microsoft .NET-keretrendszer vagy COM-objektum egy példányát hozza létre.
Syntax
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
Description
A New-Object
parancsmag létrehoz egy .NET-keretrendszer vagy COM-objektum egy példányát.
Megadhatja egy .NET-keretrendszer osztály típusát vagy egy COM-objektum ProgID azonosítóját. Alapértelmezés szerint beírja egy .NET-keretrendszer osztály teljes nevét, és a parancsmag az adott osztály egy példányára mutató hivatkozást ad vissza. COM-objektum példányának létrehozásához használja a ComObject paramétert , és adja meg az objektum ProgID azonosítóját értékként.
Példák
1. példa: System.Version objektum létrehozása
Ez a példa létrehoz egy System.Version objektumot az "1.2.3.4" sztring használatával konstruktorként.
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
2. példa: Internet Explorer COM-objektum létrehozása
Ez a példa az Internet Explorer alkalmazást jelképező COM-objektum két példányát hozza létre. Az első példány a Tulajdonság paraméter kivonattábláját használja a Navigate2 metódus meghívásához, és az objektum $True
Visible tulajdonságának beállításával teszi láthatóvá az alkalmazást.
A második példány ugyanazokat az eredményeket kapja az egyes parancsokkal.
$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. példa: A Szigorú paraméter használata nem végződő hiba létrehozásához
Ez a példa azt mutatja be, hogy a Szigorú paraméter hozzáadása miatt a New-Object
parancsmag nem végződő hibát okoz, amikor a COM-objektum interop szerelvényt használ.
$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. példa: COM-objektum létrehozása a Windows asztal kezeléséhez
Ez a példa bemutatja, hogyan hozhat létre és használhat COM-objektumot a Windows-asztal kezeléséhez.
Az első parancs a parancsmag ComObject paraméterével New-Object
hoz létre COM-objektumot a Shell.Application ProgID azonosítóval. Az eredményként kapott objektumot a $ObjShell
változóban tárolja. A második parancs a változót $ObjShell
a Get-Member
parancsmaghoz irányítja, amely megjeleníti a COM-objektum tulajdonságait és metódusait. A metódusok között szerepel a ToggleDesktop metódus. A harmadik parancs meghívja az objektum ToggleDesktop metódusát, hogy minimalizálja a megnyitott ablakokat az asztalon.
$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. példa: Több argumentum átadása konstruktornak
Ez a példa bemutatja, hogyan hozhat létre több paramétert használó konstruktort tartalmazó objektumot. A paramétereket argumentumlista paraméter használatakor tömbbe kell helyezni.
$array = @('One', 'Two', 'Three')
$parameters = @{
TypeName = 'System.Collections.Generic.HashSet[string]'
ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters
A PowerShell a tömb minden tagját a konstruktor egy paraméteréhez köti.
Feljegyzés
Ez a példa paraméterplatformot használ az olvashatóság érdekében. További információ: about_Splatting.
6. példa: Egy tömböt egyetlen paraméterként használó konstruktor meghívása
Ez a példa bemutatja, hogyan hozhat létre objektumot egy olyan konstruktorral, amely tömb vagy gyűjtemény paramétert vesz igénybe. A tömbparamétert egy másik tömbbe kell burkolni.
$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
A példában az objektum létrehozásának első kísérlete sikertelen. A PowerShell megpróbálta a konstruktor három tagját $array
a konstruktor paramétereihez kötni, de a konstruktor nem vesz fel három paramétert. Egy másik tömbbe való burkolás $array
megakadályozza, hogy a PowerShell a konstruktor paramétereihez kösse $array
a három tagot.
Paraméterek
-ArgumentList
A .NET-keretrendszer osztály konstruktorának átadandó argumentumok tömbje. Ha a konstruktor egyetlen tömbparamétert vesz igénybe, ezt a paramétert egy másik tömbbe kell burkolnia. Példa:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
Az Argumentumlista működésével kapcsolatos további információkért lásd: about_Splatting.
Az Argumentumlista aliasa az Args.
Típus: | Object[] |
Aliasok: | Args |
Position: | 1 |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-ComObject
A COM-objektum programozott azonosítóját (ProgID) adja meg.
Típus: | String |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Property
Beállítja a tulajdonságértékeket, és meghívja az új objektum metódusait.
Adjon meg egy kivonattáblát, amelyben a kulcsok a tulajdonságok vagy metódusok nevei, az értékek pedig tulajdonságértékek vagy metódusargumentumok. New-Object
létrehozza az objektumot, és beállítja az egyes tulajdonságértékeket, és meghívja az egyes metódusokat a kivonattáblában megjelenő sorrendben.
Ha az új objektum a PSObject osztályból származik, és olyan tulajdonságot ad meg, amely nem létezik az objektumon, New-Object
a megadott tulajdonságot NotePropertyként adja hozzá az objektumhoz. Ha az objektum nem PSObject, a parancs nem végződő hibát okoz.
Típus: | IDictionary |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Strict
Azt jelzi, hogy a parancsmag nem végződő hibát okoz, ha egy létrehozni kívánt COM-objektum interop szerelvényt használ. Ez a funkció megkülönbözteti a tényleges COM-objektumokat .NET-keretrendszer objektumoktól COM-hívható burkolókkal.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-TypeName
A .NET-keretrendszer osztály teljes nevét adja meg. A TypeName és a ComObject paraméter nem adható meg.
Típus: | String |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
Ez a parancsmag visszaadja az általa létrehozott objektumot.
Jegyzetek
New-Object
A VBScript CreateObject függvény leggyakrabban használt funkcióit biztosítja. A VBScripthez hasonlóSet objShell = CreateObject("Shell.Application")
utasítások lefordíthatók a$objShell = New-Object -COMObject "Shell.Application"
PowerShellben.New-Object
kibővíti a Windows-szkriptgazda környezetben elérhető funkciókat, és megkönnyíti .NET-keretrendszer objektumokkal való munkát a parancssorból és a szkripteken belül.