New-Object
Microsoft .NET Framework veya COM nesnesinin bir örneğini oluşturur.
Syntax
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
Description
cmdlet'i New-Object
bir .NET Framework veya COM nesnesinin örneğini oluşturur.
.NET Framework sınıfının türünü veya COM nesnesinin ProgID değerini belirtebilirsiniz. Varsayılan olarak, bir .NET Framework sınıfının tam adını yazarsınız ve cmdlet bu sınıfın bir örneğine başvuru döndürür. COM nesnesinin bir örneğini oluşturmak için ComObject parametresini kullanın ve nesnenin ProgID değerini belirtin.
Örnekler
Örnek 1: System.Version nesnesini İçerik Oluşturucu
Bu örnek, oluşturucu olarak "1.2.3.4" dizesini kullanarak bir System.Version nesnesi oluşturur.
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
Örnek 2: Internet Explorer COM nesnesi İçerik Oluşturucu
Bu örnek, Internet Explorer uygulamasını temsil eden COM nesnesinin iki örneğini oluşturur. İlk örnek, Navigate2 yöntemini çağırmak ve uygulamanın görünür olmasını sağlamak için nesnenin Visible özelliğini ayarlamak için $True
Özellik parametresi karma tablosunu kullanır.
İkinci örnek, tek tek komutlarla aynı sonuçları alır.
$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`
Örnek 3: Sonlandırılmayan bir hata oluşturmak için Strict parametresini kullanın
Bu örnekte Strict parametresinin eklenmesinin, COM nesnesi birlikte çalışma derlemesi New-Object
kullandığında cmdlet'in sonlandırmayan bir hata oluşturmasına neden olduğu gösterilmektedir.
$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
Örnek 4: Windows masaüstünü yönetmek için bir COM nesnesi İçerik Oluşturucu
Bu örnekte, Windows masaüstünüzü yönetmek için COM nesnesi oluşturma ve kullanma işlemi gösterilmektedir.
İlk komut, Shell.Application ProgID ile bir COM nesnesi oluşturmak için cmdlet'in New-Object
ComObject parametresini kullanır. Sonuçta elde edilen nesneyi değişkeninde $ObjShell
depolar. İkinci komut, değişkenini $ObjShell
COM nesnesinin Get-Member
özelliklerini ve yöntemlerini görüntüleyen cmdlet'ine aktarır. Yöntemler arasında ToggleDesktop yöntemi bulunur. Üçüncü komut, masaüstünüzdeki açık pencereleri simge durumuna küçültmek için nesnenin ToggleDesktop yöntemini çağırır.
$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}
Örnek 5: Bir oluşturucuya birden çok bağımsız değişken geçirme
Bu örnekte, birden çok parametre alan bir oluşturucu ile bir nesnenin nasıl oluşturulacağı gösterilmektedir. ArgumentList parametresi kullanılırken parametreler bir diziye yerleştirilmelidir.
$array = @('One', 'Two', 'Three')
$parameters = @{
TypeName = 'System.Collections.Generic.HashSet[string]'
ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters
PowerShell, dizinin her bir üyesini oluşturucunun bir parametresine bağlar.
Not
Bu örnekte okunabilirlik için parametre sıçraması kullanılır. Daha fazla bilgi için bkz. about_Splatting.
Örnek 6: Bir diziyi tek parametre olarak alan bir oluşturucuyu çağırma
Bu örnekte, dizi veya koleksiyon olan bir parametreyi alan bir oluşturucu ile bir nesnenin nasıl oluşturulacağı gösterilmektedir. Dizi parametresi başka bir dizinin içine sarmalanmış olarak yerleştirilmelidir.
$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
Bu örnekteki ilk nesne oluşturma girişimi başarısız olur. PowerShell üç üyesini $array
oluşturucunun parametrelerine bağlamaya çalıştı, ancak oluşturucu üç parametre almaz. Başka bir dizide sarmalama $array
, PowerShell'in üç üyesini $array
oluşturucunun parametrelerine bağlamaya çalışmasını engeller.
Parametreler
-ArgumentList
.NET Framework sınıfının oluşturucusna geçirecek bir bağımsız değişken dizisini belirtir. Oluşturucu bir dizi olan tek bir parametre alırsa, bu parametreyi başka bir dizi içine sarmalamanız gerekir. Örnek:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
ArgumentList'in davranışı hakkında daha fazla bilgi için bkz. about_Splatting.
ArgumentList'in diğer adı Args'dir.
Type: | Object[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComObject
COM nesnesinin programlı tanımlayıcısını (ProgID) belirtir.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
Özellik değerlerini ayarlar ve yeni nesnenin yöntemlerini çağırır.
Anahtarların özelliklerin veya yöntemlerin adları, değerlerin ise özellik değerleri veya yöntem bağımsız değişkenleri olduğu bir karma tablo girin. New-Object
nesnesini oluşturur ve her özellik değerini ayarlar ve her yöntemi karma tabloda göründükleri sırayla çağırır.
Yeni nesne PSObject sınıfından türetilirse ve nesnede var olmayan bir özellik belirtirseniz, New-Object
belirtilen özelliği nesneye NoteProperty olarak ekler. Nesne bir PSObject değilse, komut sonlandırılmayan bir hata oluşturur.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Strict
Oluşturmaya çalıştığınız bir COM nesnesi birlikte çalışma derlemesi kullandığında cmdlet'in sonlandırılmayan bir hata oluşturduğunu gösterir. Bu özellik, COM çağrılabilen sarmalayıcılarla gerçek COM nesnelerini .NET Framework nesnelerden ayırır.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TypeName
.NET Framework sınıfının tam adını belirtir. Hem TypeName parametresini hem de ComObject parametresini belirtemezsiniz.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Girişler
None
Bu cmdlet'e giriş kanalı yapamazsınız.
Çıkışlar
Object
New-Object
oluşturulan nesneyi döndürür.
Notlar
New-Object
VBScript CreateObject işlevinin en yaygın olarak kullanılan işlevselliğini sağlar. VBScript'teki gibiSet objShell = CreateObject("Shell.Application")
bir deyim PowerShell'de çevrilebilir$objShell = New-Object -COMObject "Shell.Application"
.New-Object
, komut satırından ve betikler içinde .NET Framework nesnelerle çalışmayı kolaylaştırarak Windows Betik Konağı ortamında sağlanan işlevselliği genişletir.