New-Object
Microsoft .NET Framework veya COM nesnesinin bir örneğini oluşturur.
Sözdizimi
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'sini 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 nesnesi oluşturma
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 oluşturma
Bu örnek, Internet Explorer uygulamasını temsil eden COM nesnesinin iki örneğini oluşturur. İlk örnek, Navigate2 yöntemini çağırmak ve nesnenin Visible özelliğini uygulamanın görünür olmasını sağlamak için 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 örnek, Strict parametresinin eklenmesinin New-Object
COM nesnesi birlikte çalışma derlemesi kullandığında cmdlet'in sonlandırılmayan bir hata oluşturmasına neden olduğunu gösterir.
$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 COM nesnesi oluşturma
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 ComObject parametresini New-Object
kullanır. Sonuçta elde edilen nesneyi değişkende $ObjShell
depolar. İkinci komut $ObjShell
, değişkeni COM nesnesinin Get-Member
özelliklerini ve yöntemlerini görüntüleyen cmdlet'ine aktarır. Yöntemler arasında ToggleDesktop yöntemi yer alır. Üçüncü komut, masaüstünüzdeki açık pencereleri en aza indirmek 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: 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 ü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 nesne oluşturma işlemi 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 nesneyi 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 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. Örneğin:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
ArgumentList'in davranışı hakkında daha fazla bilgi için bkz. about_Splatting.
ArgumentList diğer adı Args'dir.
Tür: | Object[] |
Diğer adlar: | Args |
Position: | 1 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ComObject
COM nesnesinin program tanımlayıcısını (ProgID) belirtir.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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 bulunmayan 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.
Tür: | IDictionary |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Strict
Oluşturmaya çalıştığınız bir COM nesnesi birlikte çalışma derlemesi kullandığında cmdlet'in sonlandırıcı olmayan bir hata oluşturduğunu gösterir. Bu özellik, COM çağrılabilen sarmalayıcılarla gerçek COM nesnelerini .NET Framework nesnelerinden ayırır.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-TypeName
.NET Framework sınıfının tam adını belirtir. Hem TypeName parametresini hem de ComObject parametresini belirtemezsiniz.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
None
Nesneleri bu cmdlet'e yöneltemezsiniz.
Çıkışlar
Bu cmdlet, oluşturduğu nesneyi döndürür.
Notlar
New-Object
VBScript CreateObject işlevinin en yaygın 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 nesneleriyle çalışmayı kolaylaştırarak Windows Betik Konağı ortamındaki kullanılabilir işlevselliği genişletir.
İlişkili Bağlantılar
PowerShell