首页 文章

Powershell v3实例化类

提问于
浏览
2

我尝试了两种方法在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 回答

  • 3

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

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

    $netregex = [regex]::new('\/\/.*')
    $nosingleline = $netregex.Replace("//hey", '')
    
    $regex = New-Object -Type System.Text.RegularExpressions.Regex -ArgumentList '\/\/.*'
    $regex.Replace("//hey", "")
    

相关问题