Megosztás a következőn keresztül:


New-Object

Létrehoz egy Microsoft .NET-keretrendszer vagy COM-objektum egy példányát.

Syntax

New-Object
   [-TypeName] <String>
   [[-ArgumentList] <Object[]>]
   [-Property <IDictionary>]
   [<CommonParameters>]
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.

Jegyzet

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 $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.

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, 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 a .NET-keretrendszer objektumaitó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. Nem adhatja meg a TypeName paramétert és a ComObject paramétert.

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

Object

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 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-Object kibő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.