2014年7月15日火曜日

PowerShell で「コンストラクターが見つかりません」エラー

Windows PowerShell でインスタンスを作成すると「コンストラクターが見つかりません。型*の適切なコンストラクターが見つかりません。」というエラーが発生します。

Singleton パターンなどのコンストラクターが無いクラスは、新規のインスタンスを作成できないので New-Object コマンドレットは使えません。静的メンバにアクセスする場合は[角かっこ]で記述します。

■ 記述例
[System.Web.Mail.SmtpMail]::SmtpServer = "smtp.gmail.com"

■ エラーメッセージの例
PS> $smtp = New-Object System.Web.Mail.SmtpMail
New-Object : コンストラクターが見つかりません。型 System.Web.Mail.SmtpMail の適切なコンストラクターが見つかりません。
発生場所 行:1 文字:19
+ $smtp = New-Object <<<<  System.Web.Mail.SmtpMail
    + CategoryInfo          : ObjectNotFound: (:) [New-Object]、PSArgumentException
    + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand

■ 関連する資料のリンク

静的なクラスとメソッドの使用
http://technet.microsoft.com/ja-jp/library/dd347632.aspx

SmtpMail クラス
http://msdn.microsoft.com/ja-jp/library/system.web.mail.smtpmail.aspx