Bagikan melalui


New-Object

Membuat instans objek Microsoft .NET Framework atau COM.

Sintaks

Net (Default)

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

Com

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

Deskripsi

Cmdlet New-Object 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 terlihat objek ke untuk 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 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  <<<< -ComObject 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 untuk membuat objek COM dengan Shell.Application ProgID. Ini menyimpan objek yang dihasilkan dalam variabel $objShell. Perintah kedua menyalurkan variabel $objShell ke cmdlet Get-Member, 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.

Nota

Contoh ini menggunakan parameter splatting untuk keterbacaan. Untuk lebih banyak informasi, 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 lebih lanjut tentang perilaku ArgumentList, lihat about_Splatting.

Alias untuk ArgumentList Args.

Properti parameter

Jenis:

Object[]

Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Argumen

Set parameter

Net
Position:1
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ComObject

Menentukan pengidentifikasi terprogram (ProgID) objek COM.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

Com
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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, menambahkan properti yang ditentukan ke objek sebagai NoteProperty. Jika objek bukan PSObject, perintah menghasilkan kesalahan yang tidak mengakhiri.

Properti parameter

Jenis:IDictionary
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

Com
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-TypeName

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

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

Net
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

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") di VBScript dapat diterjemahkan ke $objShell = New-Object -ComObject "Shell.Application" di PowerShell.
  • New-Object memperluas fungsionalitas yang tersedia di lingkungan Windows Script Host dengan memudahkan untuk bekerja dengan objek .NET Framework dari baris perintah dan dalam skrip.