PowerShell v5 の新しいクラス関数をいじって、メソッドをクラスに入れることができるかどうかを理解しようとしています。
以下を試して、少し遊んでみましたが、うまくいきませんでした。
class Server {
[string]$computerName = "192.168.0.200"
[bool]$ping = (Test-Connection -ComputerName $computerName).count
}
$1 = [server]::new()
$1.computerName = "blah"
プロパティを設定してコンピューター名を手動で入力しようとしましたが、オブジェクトの作成時に必要になると思いました
$1 = [server]::new($computerName = "192.168.0.200")
私が得ている例外は
[ERROR] Exception calling ".ctor" with "0" argument(s): "Cannot validate argument on parameter 'ComputerName'. The argument is null or empty. Provide an argument that is not null or empty, and then try the
[ERROR] command again."
[ERROR] At D:\Google Drive\Projects\VSPowerShell\DiscoveryFramework\DiscoveryFramework\DiscoveryFramework\class.ps1:12 char:1
[ERROR] + $1 = [server]::new()
[ERROR] + ~~~~~~~~~~~~~~~~~~~~
[ERROR] + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
[ERROR] + FullyQualifiedErrorId : ParameterBindingValidationException
[ERROR]
[DBG]: PS C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>
[DBG]: PS C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE> $1
Server
[DBG]: PS C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE> $1.gettype()
Server
$error からの完全な例外リンクはhttp://pastebin.com/WtxfYzb5にあります
$this.prop をもう少し使用しましたが、独自のパラメーターでコンストラクターを開始することはできません。
PS path:\> class Server {
[string]$computerName = "192.168.0.200"
[bool]$ping = (Test-Connection -ComputerName $this.computerName).count
}
PS path:\>
PS path:\> $var = [server]::new()
PS path:\> $var
computerName ping
------------ ----
192.168.0.200 True