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
New-Object
cmdlet'i 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 uygulamanın görünür olmasını sağlamak için nesnenin Visible özelliğini olarak ayarlamak için $true
parametre 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 kullandığında New-Object
cmdlet'inin sonlandırıcı olmayan bir hata oluşturmasına neden olduğu gösterilmiştir.
$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
Ö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, cmdlet'in New-Object
parametresini kullanarak Shell.Application ProgID ile bir COM nesnesi oluşturur. Sonuçta elde edilen nesneyi $objShell
değişkeninde depolar. İkinci komut, $objShell
değişkenini COM nesnesinin özelliklerini ve yöntemlerini görüntüleyen Get-Member
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, $array
üç üyesini oluşturucunun parametrelerine bağlamaya çalıştı, ancak oluşturucu üç parametre almaz. başka bir dizideki $array
sarmalama, PowerShell'in $array
üç üyesini oluşturucunun parametrelerine bağlamaya çalışmasını önler.
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. Mesela:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
ArgumentListdavranışı hakkında daha fazla bilgi için bkz. about_Splatting.
ArgumentList diğer adı Args .
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 var olmayan bir özellik belirtirseniz New-Object
belirtilen özelliği nesneye NoteProperty olarak ekler. Nesne bir PSObjectdeğ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'teSet objShell = CreateObject("Shell.Application")
gibi bir deyim PowerShell'de$objShell = New-Object -ComObject "Shell.Application"
çevrilebilir. -
New-Object
, komut satırından ve betikler içinde .NET Framework nesneleriyle çalışmayı kolaylaştırarak Windows Betik Konağı ortamındaki işlevselliği genişletir.
İlişkili Bağlantılar
PowerShell