New-Object

Membuat instans objek Microsoft .NET Framework atau COM.

Sintaks

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

Deskripsi

New-Object Cmdlet membuat instans objek .NET Framework atau COM.

Anda dapat menentukan jenis kelas .NET Framework atau ProgID objek COM. Secara default, Anda mengetikkan nama kelas .NET Framework yang sepenuhnya memenuhi syarat dan cmdlet mengembalikan referensi ke instans kelas tersebut. Untuk membuat instans objek COM, gunakan parameter ComObject dan tentukan ProgID objek sebagai nilainya.

Contoh

Contoh 1: Membuat objek System.Version

Contoh ini membuat objek System.Version menggunakan string "1.2.3.4" sebagai konstruktor.

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

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

Contoh 2: Membuat objek COM Internet Explorer

Contoh ini membuat dua instans objek COM yang mewakili aplikasi Internet Explorer. Instans pertama menggunakan tabel hash parameter Properti untuk memanggil metode Navigate2 dan mengatur properti Objek yang terlihat untuk $True membuat aplikasi terlihat. Instans kedua mendapatkan hasil yang sama dengan perintah individual.

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

Contoh 3: Gunakan parameter Ketat untuk menghasilkan kesalahan yang tidak mengakhiri

Contoh ini menunjukkan bahwa menambahkan parameter Ketat menyebabkan New-Object cmdlet menghasilkan kesalahan yang tidak mengakhiri saat objek COM menggunakan rakitan interop.

$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

Contoh 4: Membuat objek COM untuk mengelola desktop Windows

Contoh ini memperlihatkan cara membuat dan menggunakan objek COM untuk mengelola desktop Windows Anda.

Perintah pertama menggunakan parameter ComObject cmdlet New-Object untuk membuat objek COM dengan Shell.Application ProgID. Ini menyimpan objek yang dihasilkan dalam $ObjShell variabel. Perintah kedua menyalurkan $ObjShell variabel ke Get-Member cmdlet, yang menampilkan properti dan metode objek COM. Di antara metodenya adalah metode ToggleDesktop . Perintah ketiga memanggil metode ToggleDesktop objek untuk meminimalkan jendela yang terbuka di desktop Anda.

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

Contoh 5: Meneruskan beberapa argumen ke konstruktor

Contoh ini menunjukkan cara membuat objek dengan konstruktor yang mengambil beberapa parameter. Parameter harus dimasukkan ke dalam array saat menggunakan parameter ArgumentList .

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

PowerShell mengikat setiap anggota array ke parameter konstruktor.

Catatan

Contoh ini menggunakan parameter splatting untuk keterbacaan. Untuk informasi selengkapnya, lihat about_Splatting.

Contoh 6: Memanggil konstruktor yang mengambil array sebagai parameter tunggal

Contoh ini menunjukkan cara membuat objek dengan konstruktor yang mengambil parameter yang merupakan array atau koleksi. Parameter array harus dimasukkan ke dalam dibungkus di dalam array lain.

$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

Upaya pertama untuk membuat objek dalam contoh ini gagal. PowerShell mencoba mengikat tiga anggota $array ke parameter konstruktor tetapi konstruktor tidak mengambil tiga parameter. Membungkus $array dalam array lain mencegah PowerShell mencoba mengikat tiga anggota $array ke parameter konstruktor.

Parameter

-ArgumentList

Menentukan array argumen untuk diteruskan ke konstruktor kelas .NET Framework. Jika konstruktor mengambil satu parameter yang merupakan array, Anda harus membungkus parameter tersebut di dalam array lain. Contohnya:

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

Untuk informasi selengkapnya tentang perilaku ArgumentList, lihat about_Splatting.

Alias untuk ArgumentList adalah Args.

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

-ComObject

Menentukan pengidentifikasi terprogram (ProgID) objek COM.

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

-Property

Mengatur nilai properti dan memanggil metode objek baru.

Masukkan tabel hash di mana kunci adalah nama properti atau metode dan nilainya adalah nilai properti atau argumen metode. New-Object membuat objek dan mengatur setiap nilai properti dan memanggil setiap metode dalam urutan yang muncul dalam tabel hash.

Jika objek baru berasal dari kelas PSObject , dan Anda menentukan properti yang tidak ada pada objek, New-Object menambahkan properti yang ditentukan ke objek sebagai NoteProperty. Jika objek bukan PSObject, perintah menghasilkan kesalahan yang tidak mengakhiri.

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

-Strict

Menunjukkan bahwa cmdlet menghasilkan kesalahan yang tidak mengakhiri saat objek COM yang Anda coba buat menggunakan perakitan interop. Fitur ini membedakan objek COM aktual dari objek .NET Framework dengan pembungkus yang dapat dipanggil COM.

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

-TypeName

Menentukan nama kelas .NET Framework yang sepenuhnya memenuhi syarat. Anda tidak dapat menentukan parameter TypeName dan parameter ComObject .

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

Input

None

Anda tidak dapat menyalurkan objek ke cmdlet ini.

Output

Object

Cmdlet ini mengembalikan objek yang dibuatnya.

Catatan

  • New-Object menyediakan fungsionalitas yang paling umum digunakan dari fungsi VBScript CreateObject. Pernyataan seperti Set objShell = CreateObject("Shell.Application") dalam VBScript dapat diterjemahkan ke $objShell = New-Object -COMObject "Shell.Application" di PowerShell.
  • New-Object memperluas fungsionalitas yang tersedia di lingkungan Host Skrip Windows dengan memudahkan untuk bekerja dengan objek .NET Framework dari baris perintah dan dalam skrip.