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.
Jenis: | Object[] |
Alias: | Args |
Position: | 1 |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ComObject
Menentukan pengidentifikasi terprogram (ProgID) objek COM.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | IDictionary |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-TypeName
Menentukan nama kelas .NET Framework yang sepenuhnya memenuhi syarat. Anda tidak dapat menentukan parameter TypeName dan parameter ComObject .
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
None
Anda tidak dapat menyalurkan objek ke cmdlet ini.
Output
Cmdlet ini mengembalikan objek yang dibuatnya.
Catatan
New-Object
menyediakan fungsionalitas yang paling umum digunakan dari fungsi VBScript CreateObject. Pernyataan sepertiSet 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.