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

Object

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 gibi Set 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.