我尝试过两种方法在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(“// hey”,“”)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo:OperationStopped:(:) [],InvalidCastException
- FullyQualifiedErrorId:System.InvalidCastException
第二种方式产生了这个:
方法调用失败,因为 [System.Text.RegularExpressions.Regex]不包含名为的方法 '新'。在行:4 char:1
- $ netregex = [regex] :: new('//.*')|获得会员
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo:InvalidOperation:(:) [],RuntimeException
- FullyQualifiedErrorId:MethodNotFound
答案 0 :(得分:3)
从两个命令中删除| Get-Member
。它正在改变在这些行上输出的最终对象类型。
还可以使用.
来访问该方法:
$netregex = [regex]::new('\/\/.*')
$nosingleline = $netregex.Replace("//hey", '')
$regex = New-Object -Type System.Text.RegularExpressions.Regex -ArgumentList '\/\/.*'
$regex.Replace("//hey", "")