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.

Type:Object[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComObject

A COM-objektum programozott azonosítóját (ProgID) adja meg.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:IDictionary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeName

A .NET-keretrendszer osztály teljes nevét adja meg. A TypeName és a ComObject paraméter nem adható meg.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 VBScripthez hasonló Set objShell = CreateObject("Shell.Application") utasítások lefordíthatók a $objShell = New-Object -COMObject "Shell.Application" PowerShellben.
  • New-Objectkibő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.