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