New-Object
Microsoft .NET Framework または COM オブジェクトのインスタンスを作成します。
構文
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
説明
コマンドレットはNew-Object
、.NET Frameworkまたは COM オブジェクトのインスタンスを作成します。
.NET Framework クラスの型または COM オブジェクトの ProgID のどちらかを指定できます。 既定では、.NET Framework クラスの完全修飾名を入力すると、そのクラスのインスタンスへの参照が返されます。 COM オブジェクトのインスタンスを作成するには、 ComObject パラメーターを使用し、オブジェクトの ProgID を値として指定します。
例
例 1: System.Version オブジェクトをCreateする
この例では、コンストラクターとして "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: インターネット エクスプローラー COM オブジェクトをCreateする
この例では、インターネット エクスプローラー アプリケーションを表す COM オブジェクトの 2 つのインスタンスを作成します。 最初のインスタンスでは 、Property パラメーター ハッシュ テーブルを使用して Navigate2 メソッドを呼び出し、オブジェクトの Visible プロパティを に $True
設定して、アプリケーションを表示します。
2 番目のインスタンスは、個々のコマンドで同じ結果を取得します。
$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 パラメーターを追加すると、COM オブジェクトが New-Object
相互運用機能アセンブリを使用するときに、コマンドレットで終了しないエラーが生成されることを示します。
$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: COM オブジェクトをCreateして Windows デスクトップを管理する
この例では、COM オブジェクトを作成および使用して Windows デスクトップを管理する方法を示します。
最初のコマンドでは、 コマンドレットの ComObject パラメーターを New-Object
使用して、 Shell.Application ProgID を使用して COM オブジェクトを作成します。 結果のオブジェクトが変数に $ObjShell
格納されます。 2 番目の $ObjShell
コマンドは、COM オブジェクトの Get-Member
プロパティとメソッドを表示する コマンドレットに変数をパイプします。 メソッドの中には ToggleDesktop メソッドがあります。 3 番目のコマンドは、オブジェクトの 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: 配列を 1 つのパラメーターとして受け取るコンストラクターを呼び出す
この例では、配列またはコレクションであるパラメーターを受け取るコンストラクターを使用してオブジェクトを作成する方法を示します。 配列パラメーターは、別の配列内にラップして配置する必要があります。
$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 は の 3 つのメンバーをコンストラクターの $array
パラメーターにバインドしようとしましたが、コンストラクターは 3 つのパラメーターを受け取りません。 別の配列でラップ $array
すると、 の 3 つのメンバーがコンストラクターの $array
パラメーターにバインドできなくなります。
パラメーター
-ArgumentList
.NET Framework クラスのコンストラクターに渡す引数の配列を指定します。 コンストラクターが配列である 1 つのパラメーターを受け取る場合は、そのパラメーターを別の配列内でラップする必要があります。 例:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
ArgumentList の動作の詳細については、「about_Splatting」を参照してください。
ArgumentList のエイリアスは、Args です。
Type: | Object[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComObject
COM オブジェクトのプログラム識別子 (ProgID) を指定します。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
プロパティ値を設定し、新しいオブジェクトのメソッドを呼び出します。
プロパティまたはメソッドの名前をキー、プロパティの値またはメソッドの引数を値とするハッシュ テーブルを入力します。 New-Object
は オブジェクトを作成し、各プロパティ値を設定し、ハッシュ テーブルに表示される順序で各メソッドを呼び出します。
新しいオブジェクトが PSObject クラスから派生し、オブジェクトに存在しないプロパティを指定した場合は、 New-Object
指定したプロパティを NoteProperty としてオブジェクトに追加します。 オブジェクトが PSObject でない場合、コマンドは終了しないエラーを生成します。
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Strict
作成しようとしている COM オブジェクトが相互運用機能アセンブリを使用すると、コマンドレットで終了しないエラーが生成されることを示します。 この機能は、実際の COM オブジェクトと、COM 呼び出し可能ラッパーを含む .NET Framework オブジェクトとを識別します。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TypeName
.NET Framework クラスの完全修飾名を指定します。 TypeName パラメーターと ComObject パラメーターの両方を指定することはできません。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
None
オブジェクトをこのコマンドレットにパイプすることはできません。
出力
このコマンドレットは、作成した オブジェクトを返します。
メモ
New-Object
には、VBScript CreateObject 関数の最も一般的に使用される機能が用意されています。 VBScript のようなSet objShell = CreateObject("Shell.Application")
ステートメントは、PowerShell で に$objShell = New-Object -COMObject "Shell.Application"
変換できます。New-Object
は、コマンド ラインとスクリプト内で.NET Framework オブジェクトを簡単に操作できるようにすることで、Windows スクリプト ホスト環境で使用できる機能を拡張します。