New-Object
Skapar en instans av ett Microsoft .NET Framework- eller COM-objekt.
Syntax
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
Description
Cmdleten New-Object
skapar en instans av ett .NET Framework- eller COM-objekt.
Du kan ange antingen typen av en .NET Framework-klass eller ett ProgID för ett COM-objekt. Som standard skriver du det fullständigt kvalificerade namnet på en .NET Framework-klass och cmdleten returnerar en referens till en instans av den klassen. Om du vill skapa en instans av ett COM-objekt använder du parametern ComObject och anger ProgID för objektet som dess värde.
Exempel
Exempel 1: Skapa ett System.Version-objekt
I det här exemplet skapas ett System.Version-objekt med strängen "1.2.3.4" som konstruktor.
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
Exempel 2: Skapa ett INTERNET Explorer COM-objekt
Det här exemplet skapar två instanser av COM-objektet som representerar Internet Explorer-programmet. Den första instansen använder hash-tabellen Property parameter för att anropa metoden Navigate2 och ange egenskapen Visible för objektet till $True
för att göra programmet synligt.
Den andra instansen får samma resultat med enskilda kommandon.
$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`
Exempel 3: Använd parametern Strict för att generera ett icke-avslutande fel
Det här exemplet visar att om du lägger till parametern StrictNew-Object
genereras ett icke-avslutande fel när COM-objektet använder en interop-sammansättning.
$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
Exempel 4: Skapa ett COM-objekt för att hantera Windows-skrivbordet
Det här exemplet visar hur du skapar och använder ett COM-objekt för att hantera ditt Windows-skrivbord.
Det första kommandot använder parametern ComObject för cmdleten New-Object
för att skapa ett COM-objekt med Shell.Application ProgID. Det lagrar det resulterande objektet i variabeln $ObjShell
. Det andra kommandot skickar variabeln $ObjShell
till cmdleten Get-Member
, som visar egenskaperna och metoderna för COM-objektet. Bland metoderna finns metoden ToggleDesktop. Det tredje kommandot anropar ToggleDesktop -metoden för objektet för att minimera de öppna fönstren på skrivbordet.
$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}
Exempel 5: Skicka flera argument till en konstruktor
Det här exemplet visar hur du skapar ett objekt med en konstruktor som tar flera parametrar. Parametrarna måste placeras i en matris när du använder parametern ArgumentList.
$array = @('One', 'Two', 'Three')
$parameters = @{
TypeName = 'System.Collections.Generic.HashSet[string]'
ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters
PowerShell binder varje medlem i matrisen till en parameter i konstruktorn.
Not
I det här exemplet används parametersplattning för läsbarhet. Mer information finns i about_Splatting.
Exempel 6: Anropa en konstruktor som tar en matris som en enskild parameter
Det här exemplet visar hur du skapar ett objekt med en konstruktor som tar en parameter som är en matris eller samling. Matrisparametern måste infogas i en annan matris.
$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
Det första försöket att skapa objektet i det här exemplet misslyckas. PowerShell försökte binda de tre medlemmarna i $array
till konstruktorns parametrar, men konstruktorn tar inte tre parametrar. Omslutning $array
i en annan matris hindrar PowerShell från att försöka binda de tre medlemmarna i $array
till konstruktorns parametrar.
Parametrar
-ArgumentList
Anger en matris med argument som ska skickas till konstruktorn för .NET Framework-klassen. Om konstruktorn tar en enskild parameter som är en matris måste du omsluta parametern i en annan matris. Till exempel:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
Aliaset för ArgumentList är Args.
Typ: | Object[] |
Alias: | Args |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-ComObject
Anger den programmatiska identifieraren (ProgID) för COM-objektet.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Property
Anger egenskapsvärden och anropar metoder för det nya objektet.
Ange en hash-tabell där nycklarna är namnen på egenskaper eller metoder och värdena är egenskapsvärden eller metodargument.
New-Object
skapar objektet och anger varje egenskapsvärde och anropar varje metod i den ordning som de visas i hash-tabellen.
Om det nya objektet härleds från klassen PSObject och du anger en egenskap som inte finns i objektet, lägger New-Object
till den angivna egenskapen i objektet som en NoteProperty. Om objektet inte är en PSObject-genererar kommandot ett icke-avslutande fel.
Typ: | IDictionary |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Strict
Anger att cmdleten genererar ett icke-avslutande fel när ett COM-objekt som du försöker skapa använder en interop-sammansättning. Den här funktionen skiljer faktiska COM-objekt från .NET Framework-objekt med COM-anropsbara omslutningar.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-TypeName
Anger det fullständigt kvalificerade namnet på .NET Framework-klassen. Du kan inte ange både parametern TypeName och parametern ComObject.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka indata till den här cmdleten.
Utdata
Object
New-Object
returnerar objektet som skapas.
Kommentarer
-
New-Object
innehåller de vanligaste funktionerna i funktionen VBScript CreateObject. En instruktion somSet objShell = CreateObject("Shell.Application")
i VBScript kan översättas till$objShell = New-Object -COMObject "Shell.Application"
i PowerShell. -
New-Object
utökar funktionerna i Windows Script Host-miljön genom att göra det enkelt att arbeta med .NET Framework-objekt från kommandoraden och i skript.