Aracılığıyla paylaş


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-ObjectComObject 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 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 nesnelerle çalışmayı kolaylaştırarak Windows Betik Konağı ortamında sağlanan işlevselliği genişletir.