Udostępnij za pośrednictwem


New-Object

Tworzy wystąpienie obiektu Microsoft .NET Framework lub COM.

Składnia

New-Object
   [-TypeName] <String>
   [[-ArgumentList] <Object[]>]
   [-Property <IDictionary>]
   [<CommonParameters>]
New-Object
   [-ComObject] <String>
   [-Strict]
   [-Property <IDictionary>]
   [<CommonParameters>]

Opis

Polecenie New-Object cmdlet tworzy wystąpienie obiektu .NET Framework lub COM.

Można określić typ klasy .NET Framework lub ProgID obiektu COM. Domyślnie należy wpisać w pełni kwalifikowaną nazwę klasy .NET Framework, a polecenie cmdlet zwraca odwołanie do wystąpienia tej klasy. Aby utworzyć wystąpienie obiektu COM, użyj parametru ComObject i określ wartość ProgID obiektu.

Przykłady

Przykład 1: Twórca obiekt System.Version

W tym przykładzie obiekt System.Version jest tworzony przy użyciu ciągu "1.2.3.4" jako konstruktora.

New-Object -TypeName System.Version -ArgumentList "1.2.3.4"

Major  Minor  Build  Revision
-----  -----  -----  --------
1      2      3      4

Przykład 2: Twórca obiektu COM programu Internet Explorer

W tym przykładzie są tworzone dwa wystąpienia obiektu COM reprezentujące aplikację internet explorer. Pierwsze wystąpienie używa tabeli skrótów parametrów właściwości , aby wywołać metodę Navigate2 i ustawić właściwość Visible obiektu w celu $True uwidocznienia aplikacji. Drugie wystąpienie pobiera te same wyniki za pomocą poszczególnych poleceń.

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

Przykład 3. Użyj parametru Strict, aby wygenerować błąd niepowodujący zakończenia

W tym przykładzie pokazano, że dodanie parametru Strict powoduje New-Object , że polecenie cmdlet generuje błąd niepowodujący zakończenia, gdy obiekt COM używa zestawu międzyoperacyjnego.

$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

Przykład 4: Twórca obiektu COM do zarządzania pulpitem systemu Windows

W tym przykładzie pokazano, jak utworzyć obiekt COM i użyć go do zarządzania pulpitem systemu Windows.

Pierwsze polecenie używa parametru New-ObjectComObject polecenia cmdlet do utworzenia obiektu COM z shell.Application ProgID. Przechowuje wynikowy obiekt w zmiennej $ObjShell . Drugie polecenie potokuje zmienną $ObjShell do Get-Member polecenia cmdlet, które wyświetla właściwości i metody obiektu COM. Wśród metod jest metoda ToggleDesktop . Trzecie polecenie wywołuje metodę ToggleDesktop obiektu, aby zminimalizować otwarte okna na pulpicie.

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

Przykład 5. Przekazywanie wielu argumentów do konstruktora

W tym przykładzie pokazano, jak utworzyć obiekt z konstruktorem, który przyjmuje wiele parametrów. Parametry należy umieścić w tablicy przy użyciu parametru ArgumentList .

$array = @('One', 'Two', 'Three')
$parameters = @{
    TypeName = 'System.Collections.Generic.HashSet[string]'
    ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters

Program PowerShell wiąże każdy element członkowski tablicy z parametrem konstruktora.

Uwaga

W tym przykładzie użyto platania parametrów w celu zapewnienia czytelności. Aby uzyskać więcej informacji, zobacz about_Splatting.

Przykład 6: Wywoływanie konstruktora, który przyjmuje tablicę jako pojedynczy parametr

W tym przykładzie pokazano, jak utworzyć obiekt z konstruktorem, który przyjmuje parametr, który jest tablicą lub kolekcją. Parametr tablicy należy umieścić w opakowaniu wewnątrz innej tablicy.

$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

Pierwsza próba utworzenia obiektu w tym przykładzie kończy się niepowodzeniem. Program PowerShell próbował powiązać trzy elementy członkowskie $array z parametrami konstruktora, ale konstruktor nie przyjmuje trzech parametrów. Zawijanie $array w innej tablicy uniemożliwia programowi PowerShell podjęcie próby powiązania trzech elementów członkowskich $array z parametrami konstruktora.

Parametry

-ArgumentList

Określa tablicę argumentów, które mają być przekazywane do konstruktora klasy .NET Framework. Jeśli konstruktor przyjmuje pojedynczy parametr, który jest tablicą, należy opakowować ten parametr wewnątrz innej tablicy. Na przykład:

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)

Aby uzyskać więcej informacji na temat zachowania argumentlist, zobacz about_Splatting.

Alias argumentList to Args.

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

-ComObject

Określa identyfikator programowy (ProgID) obiektu COM.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Property

Ustawia wartości właściwości i wywołuje metody nowego obiektu.

Wprowadź tabelę skrótów, w której klucze są nazwami właściwości lub metod, a wartości są wartościami właściwości lub argumentami metody. New-Object Tworzy obiekt i ustawia każdą wartość właściwości i wywołuje każdą metodę w kolejności, w której są wyświetlane w tabeli skrótów.

Jeśli nowy obiekt pochodzi z klasy PSObject i określasz właściwość, która nie istnieje w obiekcie, New-Object dodaje określoną właściwość do obiektu jako Właściwość NoteProperty. Jeśli obiekt nie jest obiektem PSObject, polecenie generuje błąd niepowodujący zakończenia.

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

-Strict

Wskazuje, że polecenie cmdlet generuje błąd niepowodujący zakończenia, gdy obiekt COM, który próbujesz utworzyć, używa zestawu międzyoperacyjnego. Ta funkcja odróżnia rzeczywiste obiekty COM od obiektów .NET Framework z wywołanymi otokami COM.

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

-TypeName

Określa w pełni kwalifikowaną nazwę klasy .NET Framework. Nie można określić parametru TypeName i parametru ComObject .

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

None

Nie można przekazać danych wejściowych potoku do tego polecenia cmdlet.

Dane wyjściowe

Object

New-Object Metoda zwraca utworzony obiekt.

Uwagi

  • New-Object Udostępnia najczęściej używane funkcje funkcji CreateObject języka VBScript. Instrukcję, na przykład Set objShell = CreateObject("Shell.Application") w języku VBScript, można przetłumaczyć $objShell = New-Object -COMObject "Shell.Application" w programie PowerShell.
  • New-Objectrozszerza funkcjonalność dostępną w środowisku hosta skryptów systemu Windows, ułatwiając pracę z obiektami .NET Framework z wiersza polecenia i w ramach skryptów.