New-Object
Microsoft .NET Framework 또는 COM 개체의 인스턴스를 만듭니다.
구문
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
Description
cmdlet은 New-Object
.NET Framework 또는 COM 개체의 인스턴스를 만듭니다.
.NET Framework 클래스의 형식 또는 COM 개체의 ProgID를 지정할 수 있습니다. 기본적으로 .NET Framework 클래스의 정규화된 이름을 입력하고 cmdlet은 해당 클래스의 인스턴스에 대한 참조를 반환합니다. COM 개체의 인스턴스를 만들려면 ComObject 매개 변수를 사용하고 개체의 ProgID를 해당 값으로 지정합니다.
예제
예제 1: System.Version 개체 만들기
다음은 "1.2.3.4" 문자열을 생성자로 사용하여 System.Version 개체를 만드는 예제입니다.
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
예제 2: Internet Explorer COM 개체 만들기
이 예제에서는 Internet Explorer 애플리케이션을 나타내는 COM 개체의 두 인스턴스를 만듭니다. 첫 번째 인스턴스는 Property 매개 변수 해시 테이블을 사용하여 Navigate2 메서드를 호출하고 개체의 Visible 속성을 설정하여 애플리케이션을 표시합니다$True
.
두 번째 인스턴스는 개별 명령을 사용하여 동일한 결과를 가져옵니다.
$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`
예제 3: Strict 매개 변수를 사용하여 종료하지 않는 오류 생성
이 예제에서는 Strict 매개 변수를 추가하면 New-Object
COM 개체가 interop 어셈블리를 사용할 때 cmdlet이 종료하지 않는 오류를 생성하는 것을 보여 줍니다.
$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
예제 4: Windows 데스크톱을 관리하는 COM 개체 만들기
이 예제에서는 COM 개체를 만들고 사용하여 Windows 바탕 화면을 관리하는 방법을 보여 줍니다.
첫 번째 명령은 cmdlet의 New-Object
ComObject 매개 변수를 사용하여 Shell.Application ProgID를 사용하여 COM 개체를 만듭니다. 결과 개체를 변수에 $ObjShell
저장합니다. 두 번째 명령은 변수를 $ObjShell
cmdlet으로 Get-Member
파이프하여 COM 개체의 속성과 메서드를 표시합니다. 메서드 중에는 ToggleDesktop 메서드가 있습니다. 세 번째 명령은 개체의 ToggleDesktop 메서드를 호출하여 바탕 화면에서 열린 창을 최소화합니다.
$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}
예제 5: 생성자에 여러 인수 전달
이 예제에서는 여러 매개 변수를 사용하는 생성자를 사용하여 개체를 만드는 방법을 보여줍니다. ArgumentList 매개 변수를 사용할 때는 매개 변수를 배열에 넣어야 합니다.
$array = @('One', 'Two', 'Three')
$parameters = @{
TypeName = 'System.Collections.Generic.HashSet[string]'
ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters
PowerShell은 배열의 각 멤버를 생성자의 매개 변수에 바인딩합니다.
참고 항목
이 예제에서는 가독성을 위해 매개 변수 스플래팅을 사용합니다. 자세한 내용은 about_Splatting 참조하세요.
예제 6: 배열을 단일 매개 변수로 사용하는 생성자 호출
이 예제에서는 배열 또는 컬렉션인 매개 변수를 사용하는 생성자를 사용하여 개체를 만드는 방법을 보여줍니다. 배열 매개 변수는 다른 배열 내부에 래핑되어야 합니다.
$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
이 예제에서 개체를 만드는 첫 번째 시도가 실패합니다. PowerShell은 생성자의 매개 변수에 세 멤버를 $array
바인딩하려고 했지만 생성자는 세 개의 매개 변수를 사용하지 않습니다. 다른 배열을 래핑 $array
하면 PowerShell에서 생성자의 매개 변수에 세 멤버 $array
를 바인딩하려고 시도하지 않습니다.
매개 변수
-ArgumentList
.NET Framework 클래스의 생성자에 전달할 인수 배열을 지정합니다. 생성자가 배열인 단일 매개 변수를 사용하는 경우 해당 매개 변수를 다른 배열 내부에 래핑해야 합니다. 예시:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
ArgumentList의 동작에 대한 자세한 내용은 about_Splatting 참조하세요.
ArgumentList의 별칭은 Args입니다.
형식: | Object[] |
별칭: | Args |
Position: | 1 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ComObject
COM 개체의 ProgID(프로그래밍 식별자)를 지정합니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Property
속성 값을 설정하고 새 개체의 메서드를 호출합니다.
키가 속성 또는 메서드의 이름이고 값이 속성 값 또는 메서드 인수인 해시 테이블을 입력합니다. New-Object
는 개체를 만들고 각 속성 값을 설정하고 해시 테이블에 나타나는 순서대로 각 메서드를 호출합니다.
새 개체가 PSObject 클래스에서 파생되고 개체 New-Object
에 없는 속성을 지정하는 경우 개체에 지정된 속성을 NoteProperty로 추가합니다. 개체가 PSObject가 아닌 경우 명령은 종료되지 않는 오류를 생성합니다.
형식: | IDictionary |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Strict
만들려는 COM 개체가 interop 어셈블리를 사용할 때 cmdlet이 종료하지 않는 오류를 생성했음을 나타냅니다. 이 기능은 COM 호출 가능 래퍼를 사용하여 .NET Framework 개체와 실제 COM 개체를 구분합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-TypeName
.NET Framework 클래스의 정규화된 이름을 지정합니다. TypeName 매개 변수와 ComObject 매개 변수를 둘 다 지정할 수 없습니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
None
개체를 이 cmdlet으로 파이프할 수 없습니다.
출력
이 cmdlet은 만든 개체를 반환합니다.
참고
New-Object
는 VBScript CreateObject 함수의 가장 일반적으로 사용되는 기능을 제공합니다. VBScript와 같은Set objShell = CreateObject("Shell.Application")
문은 PowerShell에서 변환$objShell = New-Object -COMObject "Shell.Application"
할 수 있습니다.New-Object
는 명령줄 및 스크립트 내에서 .NET Framework 개체를 쉽게 사용할 수 있도록 하여 Windows 스크립트 호스트 환경에서 사용할 수 있는 기능을 확장합니다.
관련 링크
PowerShell