我尝试了两种方法在Powershell v3中实例化一个类:
$regex = New-Object -Type System.Text.RegularExpressions.Regex -ArgumentList '\/\/.*' | Get-Member
$regex::Replace("//hey", "")
和:
$netregex = [regex]::new('\/\/.*') | Get-Member
$nosingleline = $netregex::Replace("//hey", '')
第一种方式产生这个:
无法将类型为'System.Object []'的对象强制转换为'System.Type' . 在行:2 char:1 $ regex :: Replace(“//嘿嘿”,“”)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:OperationStopped:(:) [],InvalidCastException FullyQualifiedErrorId:System.InvalidCastException
第二种方式产生了这个:
方法调用失败,因为[System.Text.RegularExpressions.Regex]不包含名为“new”的方法 . 在行:4 char:1 $ netregex = [regex] :: new('//.*')| Get-Member ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:InvalidOperation:(:) [],RuntimeException FullyQualifiedErrorId:MethodNotFound
1 回答
从两个命令中删除
| Get-Member
. 它正在改变在这些线上输出的最终对象类型 .还可以使用
.
来访问该方法: