Powershell v3实例化类

时间:2018-02-08 16:04:50

标签: powershell powershell-v3.0

我尝试过两种方法在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
    •   
  •   

1 个答案:

答案 0 :(得分:3)

从两个命令中删除| Get-Member。它正在改变在这些行上输出的最终对象类型。

还可以使用.来访问该方法:

$netregex = [regex]::new('\/\/.*')
$nosingleline = $netregex.Replace("//hey", '')

$regex = New-Object -Type System.Text.RegularExpressions.Regex -ArgumentList '\/\/.*'
$regex.Replace("//hey", "")