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. Tworzenie obiektu 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. Tworzenie obiektu COM programu Internet Explorer
W tym przykładzie tworzone są dwa wystąpienia obiektu COM reprezentującego aplikację internet explorer. Pierwsze wystąpienie używa tabeli skrótów parametrów właściwości do wywołania metody Navigate2 i ustawić właściwość Visible obiektu w celu $True
uwidocznienia aplikacji.
Drugie wystąpienie pobiera te same wyniki z poszczególnymi poleceniami.
$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. Tworzenie obiektu COM do zarządzania pulpitem z systemem Windows
W tym przykładzie pokazano, jak utworzyć obiekt COM i używać go do zarządzania pulpitem systemu Windows.
Pierwsze polecenie używa parametru New-Object
ComObject polecenia cmdlet do utworzenia obiektu COM z identyfikatorem 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 podczas korzystania z 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 splattingu 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.
Typ: | Object[] |
Aliasy: | Args |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-ComObject
Określa identyfikator programowy (ProgID) obiektu COM.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 to wartości właściwości lub argumenty 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ślisz 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.
Typ: | IDictionary |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Strict
Wskazuje, że polecenie cmdlet generuje błąd, który nie kończy się, 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łalnymi otokami COM.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-TypeName
Określa w pełni kwalifikowaną nazwę klasy .NET Framework. Nie można określić parametru TypeName i parametru ComObject .
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
None
Nie można potokować obiektów do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet zwraca obiekt, który tworzy.
Uwagi
New-Object
Udostępnia najczęściej używane funkcje funkcji VBScript CreateObject. Instrukcję podobnąSet objShell = CreateObject("Shell.Application")
do w języku VBScript można przetłumaczyć$objShell = New-Object -COMObject "Shell.Application"
na w programie PowerShell.New-Object
rozszerza funkcjonalność dostępną w środowisku hosta skryptów systemu Windows, ułatwiając pracę z obiektami programu .NET Framework z poziomu wiersza polecenia i w ramach skryptów.