New-Object
Létrehoz egy Microsoft .NET-keretrendszer vagy COM-objektum egy példányát.
Syntax
Net (Alapértelmezett)
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
Com
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
Description
A New-Object parancsmag egy .NET-keretrendszer vagy COM-objektum egy példányát hozza létre.
Megadhatja a .NET-keretrendszer osztályának típusát vagy egy COM-objektum ProgID-ját. Alapértelmezés szerint beírja egy .NET-keretrendszerosztály teljes nevét, és a parancsmag az osztály egy példányára mutató hivatkozást ad vissza. COM-objektumpéldány 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éterkivonattáblával hívja meg a Navigate2 metódust, és állítsa az objektum Visible tulajdonságát $true az alkalmazás láthatóvá tétele érdekében.
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 <<<< -ComObject 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 New-Object paraméterével hoz létre egy 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 $objShell változót a Get-Member parancsmagra 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.
Megjegyzés:
Ez a példa paraméterplatformot használ az olvashatóság érdekében. További információkért tekintse meg a következőket: 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 $array három tagját a konstruktor paramétereihez kötni, de a konstruktor nem vesz fel három paramétert. A $array egy másik tömbben való körbefuttatása megakadályozza, hogy a PowerShell a konstruktor paramétereihez kösse a $array három tagját.
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éldául:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
Az ArgumentListviselkedésével kapcsolatos további információkért lásd: about_Splatting.
Az ArgumentList aliasa Args.
Paramétertulajdonságok
| Típus: | Object[] |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Argumentumok |
Paraméterkészletek
Net
| Position: | 1 |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-ComObject
A COM-objektum programozott azonosítóját (ProgID) adja meg.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
Com
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | 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, 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.
Paramétertulajdonságok
| Típus: | IDictionary |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | 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 a .NET-keretrendszer objektumaitól COM-hívható burkolókkal.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
Com
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-TypeName
A .NET-keretrendszer osztály teljes nevét adja meg. Nem adhatja meg a TypeName paramétert és a ComObject paramétert.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
Net
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
Object
Ez a parancsmag visszaadja az általa létrehozott objektumot.
Jegyzetek
-
New-Objecta VBScript CreateObject függvény leggyakrabban használt funkcióit biztosítja. A VBScriptben lévőSet objShell = CreateObject("Shell.Application")-hez hasonló utasítások lefordíthatók$objShell = New-Object -ComObject "Shell.Application"a PowerShellben. -
New-Objectkibővíti a Windows szkriptgazdakörnyezetben elérhető funkciókat azáltal, hogy megkönnyíti a .NET-keretrendszer-objektumokkal való munkát a parancssorból és a szkripteken belül.